2017-09-11 18 views
-1

Also habe ich dieses schöne ältere Delphi 5 Projekt mit einem Tchart mit vertikalen Balken entlang einer Datetime Bottomaxis. Es funktioniert sehr gut. Jetzt möchte ich bis zu drei horizontale "Warn" -Zeilen mit jeweils bis zu drei umschaltbaren Beschriftungen hinzufügen. Die Idee besteht darin, drei rote Begrenzungslinien (drei 3-Elemente-Linienserien) und Beschriftungen ganz links, mittig und ganz rechts zu zeigen, die Y-Wertgrenzen zeigen. Beschriftungen sind umschaltbar, um Daten nicht zu stören. Und es funktioniert auch. Diese Labels müssen auch beim Scrollen auf xmin, mid und xmax stehen. Ich habe es gelöst, indem ich einen Timer gestartet habe, als die ersten Dataseries neu gezeichnet wurden, und dann die drei Labelseries mit den neuen xmin, mid und xmax des Charts zurücksetzte. Beim Scrollen folgen die Labels. Aber wenn ich zoome, ist etwas verloren. Ich drucke die Xmin, Xmax und Linienkoordinaten in der Statusleiste, wie es neu berechnet wird (zum Debuggen), es sieht ganz richtig aus, aber die drei horizontalen Linien gleiten nach links. Der am weitesten links liegende Punkt ist nicht zu sehen, ganz rechts driftet nach links, schlimmer ist der vergrößerte Zoom. Yvalues ​​sind korrekt.Tchart, komisches Plotten beim Zoomen

Gibt es eine beste Möglichkeit, plot-eventdriven Neuberechnung von Plotdaten zu machen? (Oder muss ich alles in meinem XE10.2 neu erstellen?)

+0

Ihr Programm ist ohne ein massives delphi Upgrade sicher fixierbar. Das wäre wahrscheinlich eine große Aufgabe. Wir können nicht helfen, wenn Sie keine Details zur Verfügung stellen. Viel Glück. –

+0

Ich weiß nicht, welche TeeChart-Version Sie verwenden, aber TeeChart Pro hat eine 'TColorLine', die Ihnen hilft, all dies zu tun. Wenn Sie mit den Ereignissen umgehen müssen, beachten Sie, dass Sie möglicherweise ein Diagramm 'Repaint' (oder' Draw') am Anfang von einigen von ihnen (dh 'OnZoom') erzwingen müssen, um die korrekten internen Werte zu haben. – Yeray

+0

D5 stammt aus dem Jahr 1999, daher fehlt es an Funktionalität. Dies kann ein Fehler sein, oder ich "grafiere zusammen mit den vorherigen Endkoordinaten", da die horizontalen Linien kontinuierlich angepasst werden. Ich suche nur nach einem Workaround. Danke, ich werde deinen Vorschlag berücksichtigen. –

Antwort

0

Ich habe es nur zu Hause ausgeführt, das gleiche Phänomen erscheint in XE10.2. Wenn ich heranzoome, schleicht sich die zweite Reihe (horizontale Linie, Endpunkte neu berechnet an den Kanten des Graphen) zur Seite weg. Allerdings wenn ich series2 an Topaxis anschließen, dann ist alles in Ordnung. Felsfest. Scheint wie eine natürliche Sache. Wie dumm von mir.

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