furax13
Messages postés90Date d'inscriptionmardi 28 octobre 2003StatutMembreDernière intervention24 avril 2008
-
16 oct. 2007 à 11:03
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 2009
-
18 oct. 2007 à 08:58
bonjour,
j'utilise le composant TeeChart founri avec Delphi.
Je trace environ 16 courbes de couleurs différentes.
J'aimerai lorsque l'on passe la souris sur une courbe faire afficher une info-bulles(tooltip) relative à la courbe (afficher le nom de la courbe + un commentaire)
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202114 16 oct. 2007 à 19:13
procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
// et là tu mets ce que tu veux..
// Application.MessageBox(.....);
// ex:
ShowMessage('Vous êtes passé sur mon graphique !");
end;
cantador
Vous n’avez pas trouvé la réponse que vous recherchez ?
furax13
Messages postés90Date d'inscriptionmardi 28 octobre 2003StatutMembreDernière intervention24 avril 2008 17 oct. 2007 à 08:37
ce n'est pas ce que je veux faire.
Dans l'objet TChart, je crée dynamiquement n TFastLineSeries.
Lorsque la souris passe sur une TFastLineSeries, je veux afficher sous forme d'info-bulles le nom de la courbe suivi d'un # et du contenu d'un fichier commentaire.
J'arrive à faire cela en cliquant sur la courbe puis en écrivant le code suivant :
PROCEDURE TForm1.Chart1ClickSeries(Sender: TCustomChart; Series: TChartSeries;
ValueIndex: Integer; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
....
Series.parentChart.Hint := Series.Title + ' # ' + stringgrid1.Cells[2, numCourbe];
Series.parentChart.ShowHint := true;
series.parentChart.refresh;
...
if valueindex=-1 then
ValueIndex:=Sender.NearestPoint(cssVertical,tmp);
// underMouseHint :
//prevent range error
if not ( InRange(X,low(Smallint),High(smallint)) and
InRange(y,low(Smallint),High(smallint)) ) then exit;
// cree le text du hint
tmpSt:= MonGetHint(Series,ValueIndex); // le text que tu veux.
//ajout ici une condition pour afficher / masque le hint.
if Chart1.Hint<>tmpSt then begin
Chart1.Hint:=tmpSt;
Application.CancelHint;
TWMMouse(Msg).XPos := X;
TWMMouse(Msg).YPos := Y;
Application.HintMouseMessage(Chart1,msg);
end;{if}
end;
tu peux aussi remplacer le .hint par un object avec du text ou un memo sous le graphique.
/!\ ce code rique d'être executer souvent! utilise des buffer pour les partie invariables.
bon code,
Loda
Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202114 17 oct. 2007 à 12:07
Autre solution utiliser dans le OnMouseMove (car c'est bien sur le passage de la souris et non sur un clique que tu veux le déclenchement) les coordonnées de la souris (x, y).
Il faut pouvoir dire que x, y sont sur telle ou telle TchartSeries...