Mouseover astuce pour TChart valeur de série
Je suis à l'aide d'un TChart en Delphi 7, et je veux afficher des graphiques à barres. J'utilise le code suivant pour définir la série de valeurs à partir d'une requête de base de données:
chart1.FreeAllSeries;
chart1.SeriesList.Clear;
chart1.AddSeries(TBarSeries.Create(Self));
TBarSeries(chart1.Series[0]).BarStyle:=bsRectGradient;
with query1 do
begin
Close;
Execute;
while not EoF do
begin
chart1.Series[0].Add(FieldAsFloat('sum_actual_days'), FieldAsString('contract_no'));
Next;
end;
end;
Chaque barre (valeur) est maintenant montrer l'étiquette à la fois en dessous de la barre, et dans un rectangle jaune au-dessus de la barre.
Au lieu de répéter la valeur de l'étiquette à deux reprises, j'ai quelques informations supplémentaires à partir de la requête que je voudrais montrer au-dessus de la barre au lieu de l'étiquette (ou, de préférence, comme un indice du passage de la souris). Cela peut être fait avec le TChart? Et comment... ?
Vous devez vous connecter pour publier un commentaire.
Cela peut être fait avec un TChart en utilisant le graphique de l'événement OnMouseMove. Quelque chose comme cela devrait vous aider à démarrer:
Bien sûr, la requête que vous avez utilisé pour remplir le tableau doit toujours être ouvert pour que ce code fonctionne.
La "Marque" Conseils de l'outil fournit un événement pour la fourniture de texte personnalisé (OnGetText de l'événement):
Il est la "Marque" Conseils de l'outil qui vous permet d'afficher un indice quand vous passez au dessus d'un bar. Mais je ne suis pas sûr si vous pouvez modifier l'astuce pour afficher les données personnalisées au lieu de la predifinis les styles.
Vous pouvez mettre un Panneau dans le Graphique, et de l'utiliser comme indicateur. Avec le NearestPoint outil, il fonctionne très bien.
D'abord ajouter le NearestPoint outil pour le graphique (Double-cliquez sur le graphique, sélectionnez Outils /Ajouter).
Puis ajouter un Panneau à la carte (dans le composant Graphique) et le style en fonction de vos besoins.
Puis utilisez l'événement OnMouseMove:
Si vous le souhaitez, vous pouvez désactiver la NearestPoint outil, mais nous en avons besoin pour trouver facilement le point correspondant.