2017-09-11 5 views
-1

J'ai donc ce superbe projet Delphi 5 avec un graphique avec des barres verticales le long d'un axe de fond datetime. Cela fonctionne très bien. Maintenant, je veux ajouter jusqu'à trois lignes «d'avertissement» horizontales, chacune avec jusqu'à trois étiquettes pouvant être basculées. L'idée est de montrer trois lignes de limite rouge (trois lineeries à 3 éléments), et des étiquettes à l'extrême gauche, au milieu et à l'extrême droite montrant les limites de Yvalue. Les étiquettes sont modifiables afin de ne pas encombrer les données. Et ça marche aussi. Ces étiquettes doivent s'asseoir à xmin, mid et xmax même en faisant défiler. Je l'ai résolu en commençant une minuterie lorsque les premières dataseries sont redessinées, puis en réinitialisant les trois labels avec les nouveaux xmin, mid, xmax du graphique. Lors du défilement, les étiquettes suivent. Mais quand je zoome, quelque chose est perdu. J'imprime les coordonnées xmin, xmax et line dans la barre d'état comme il est recalculé (pour le débogage), il semble tout à fait correct, mais les trois lignes horizontales s'éloignent vers la gauche. Le point le plus à gauche est hors de vue, le plus à droite dérive vers la gauche, pire avec un zoom accru. Les valeurs sont correctes.Tchart, tracé bizarre lors d'un zoom

Existe-t-il un meilleur moyen de recalculer les données de tracé à l'aide de l'intrigue-événement? (Ou est-ce que je dois tout reconstruire dans mon XE10.2?)

+0

Votre programme peut être fixée sûrement sans une mise à niveau delphi massif. Ce serait probablement une tâche énorme. Nous ne pouvons pas vous aider si vous ne fournissez pas de détails. Bonne chance. –

+0

Je ne sais pas quelle version de TeeChart utilisez-vous, mais TeeChart Pro a un 'TColorLine' qui vous aide à faire tout cela. Si vous devez le gérer avec les événements, notez que vous devrez forcer un graphique 'Repaint' (ou' Draw') au début de certains d'entre eux ('OnZoom') pour avoir les valeurs internes correctes. – Yeray

+0

D5 est de 1999 donc beaucoup de fonctionnalités d'aujourd'hui fait défaut. Cela peut être un bug, ou peut-être que je "trace avec les coordonnées de fin précédentes" puisque les lignes horizontales sont continuellement ajustées. Je cherche juste une solution de contournement. Merci, je vais considérer votre suggestion. –

Répondre

0

Je viens de l'exécuter à la maison, le même phénomène apparaît dans XE10.2. Lorsque je zoome, la deuxième série (ligne horizontale, points finaux recalculés pour être sur les bords du graphique) s'éloigne sur le côté. Cependant si je connecte série2 à Topaxis, alors tout va bien. Solide comme le roc. On dirait une chose naturelle. Que je suis bête.

procedure TForm1.Series1AfterDrawValues(Sender: TObject); 
var a,b :Double; 
begin 
a:=(Chart1.LeftAxis.Minimum+chart1.leftAxis.maximum)/2; 
b:=chart1.TopAxis.Minimum; 
series2.Clear; 
series2.addxy(b,a,'Left'); 
series2.addxy(b+(chart1.topAxis.Maximum-b)/2,a,'Mid'); 
series2.addxy(chart1.topAxis.Maximum,a,'Right'); 
end; 

Running,line stays put when scrolling