Bonjour,
je dessine une courbe (TLineSeries) dans un TChart. Je souhaite que l'utilisateur puisse cliquer sur un point de la courbe et le déplacer.
Un tel déplacement est il possible ?
Merci d'avance,
Nicolas
Bonjour,
je dessine une courbe (TLineSeries) dans un TChart. Je souhaite que l'utilisateur puisse cliquer sur un point de la courbe et le déplacer.
Un tel déplacement est il possible ?
Merci d'avance,
Nicolas
Ce déplacement est tout à fait possible :
- dans un premier temps utilise l'évènement de ta TSeries :
pour récupérer l'index du point sur lequel tu as cliqué, le bouton de la souris enfoncé et l'emplacement d'origine de la souris en X et Y.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void __fastcall TForm1::Series1Click(TChartSeries *Sender, int ValueIndex, TMouseButton Button, TShiftState Shift, int X, int Y) { }
- dans un second temps utilise l'évènement de ton TChart :
pour récupérer le bouton de la souris enfoncé ainsi que l'emplacement d'arrivée de la souris en X et Y.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void __fastcall TForm1::Chart1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { }
Voilà. Maintenant tu modifies les coordonnées du point ValueIndex (nième point de ta série) en fonction du X et Y d'arrivée (c'est lourd il faut que tu utilises une fonction pour calculer les valeurs correspondantes en fonction de tes axes ... je sais plus laquelle) puis tu redessines entièrement ton TChart.
J'ai retrouvé la fonction pour calculer la valeur correspondante à une position en pixel (X ou Y) sur un axe :
S'applique à
Composant TChartAxis
Déclaration
function CalcPosPoint(Value : Integer) : Double;
Description
Cette fonction renvoie la valeur correspondante d'une position à l'écran. Celle-ci doit être comprise entre les limites de l'axe.
Voir le Guide de l'utilisateur pour plus d'informations.
C'est exactement ce que je cherchais à faire.
Merci beaucoup.
Nicolas
Partager