Autor Beitrag
UweK
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52
Erhaltene Danke: 1

Win 7
Delphi Enterprise XE6
BeitragVerfasst: Fr 28.01.22 12:45 
Hallo allerseits,

Ich habe ein Problem mit der Aktualisierung von Grafikzeichnungen.

In einem TForm liegt u.a. ein TFrame mit Ankern auf allen Seiten, damit er der Größenänderung des TForm folgt. Im TFrame liegt u.a. ein TChart, das genauso Anker im TFrame hat und somit ebenfalls der Größenänderung des TForm folgt.

Das TChart enthält seine eigenen Daten und zeichnet diese stets korrekt. Zusätzlich zu diesen Daten zeichne ich von Hand in der Ereignisbehandlung TChart.OnAfterDraw mit Hilfe von TChart.Canvas noch ein paar Hilfslinien darüber. Zunächst sieht alles gut aus. Wenn ich nun aber ein anderes Fenster teilweise über dieses TForm ziehe, verschwinden nur in dem Bereich des TChart, über den das andere Fenster wischte, die Hilfslinien wie wegradiert. Die eigene Zeichnung der internen Daten des TChart wird dagegen korrekt wieder hergestellt. Da wird anscheinend intern im TChart ein Mechanismus zum Neuzeichnen benutzt, der aber nicht das Ereignis TChart.OnAfterDraw mit auslöst?

Wiederhergestellt bekomme ich meine Zusatzzeichnung nur, wenn ich die Größe des TForm ändere, z.B. durch Ziehen einer Seite mit der Maus. Das löst dann korrekt TChart.OnAfterDraw aus und die Hilfslinien kommen wieder. Wo liegt hier der Fehler?

Vielen Dank für Tipps.
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 378
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Do 03.02.22 22:53 
Hallo,
da es bisher keine Antwort gab, versuche ich es mal. Die TChart-Komponenten kenne ich nicht. Aber z.B. bei TPaintbox gibt es das Ereignis ONPAINT. Wenn man das nicht belegt, dann passiert mit der Paintbox exakt das, was Du für TChart beschrieben hast. ONPAINT erstellt bei mir die gesamte Grafik neu, geht bestens. Andere Komponenten (TImage z.B., wenn ich nicht irre) verarbeiten eine Überdeckung intern. Demnach müsste es ja für TChart etwas ähnliches wie ONPAINT geben.
Gruß
GuaAck

Für diesen Beitrag haben gedankt: UweK
UweK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52
Erhaltene Danke: 1

Win 7
Delphi Enterprise XE6
BeitragVerfasst: Mo 07.02.22 12:03 
Danke. "OnPaint" war das Stichwort. TChart hat dieses Ereignis nicht. Aber wenn ich in TForm.OnPaint für das in diesem Formular liegende TChart das Zeichnen der Hilfslinien von außen anstoße, geht es automatisch wie gewünscht.
Gruß Uwe