Canvas Zeichnet nicht
Eine blöde Frage, aber ich weiß nicht was ich falsch mache.
Mein Programm läuft in Form1 und ich bin auf die gute Idee gekommen, ein paar Daten in der Zeitlichen Abfolge auf Form2 anzuzeigen. Also etwa so:
Delphi-Quellcode:
Wen ich den Debugger frage, alles wird ausgeführt, nur angezeigt wird nichts (Form2 hat nicht den Focus!)
procedure TForm1.Button1Click(Sender: TObject);
begin PaintMydata; end; .... procedure TForm2.FormPaint(Sender: TObject); begin PaintMyData; end; Erst wenn ich ein anderes Fenster über Form2 hin und her bewege, oder wenn ich Form2 verkleinere/vergrößere, dann wird in den vorher verdeckten Bereichen etwas angezeigt. (ich zeichne direkt auf das Form.Canvas) was mache ich da falsch? Gruß K-H |
AW: Canvas Zeichnet nicht
Ersetze den Inhalt von
Delphi-Quellcode:
doch mal durch
Button1Click
Delphi-Quellcode:
bzw.
Invalidate()
Delphi-Quellcode:
Repaint()
|
AW: Canvas Zeichnet nicht
Warum?
Das ist das initiale Zeichnen, bzw. sollte es sein. Wahrscheinlich kommt das OnPaint von Form2 recht schnell, aber wenn nicht kann ich gut verstehen, das es einen leeren Bildschirm gibt. Auch ja das hab ich vergessen, Form2 ist bis auf den Rand schwarz, das Löschen am Anfang der Zeichenroutine scheint zu funktionieren. Gruß K-H |
AW: Canvas Zeichnet nicht
Beschreib mal noch genauer, was Du genau machst und was (nicht) klappt.
Vielleicht Demo-Projekt? Ich hatte mal - wenn ich Dich richtig verstehe - etwas ähnliches genutzt. Schau mal hier http://www.delphipraxis.net/175033-f...-schlecht.html ab #30 und hier in Aktion: http://youtu.be/iBi6SM3fjEs |
AW: Canvas Zeichnet nicht
Bin z.Zt auffe Arbeit und die Sourcen liegen zu Hause.
Aber ganz simpel
Delphi-Quellcode:
und wie oben beschrieben, sobald ich mit einem anderen Fenster darüber "wische" taucht alles auf :shock:
Canvas.drawline
Canvas.moveto usw. Gruß K-H |
AW: Canvas Zeichnet nicht
Ich schlage vor, du hältst dich an den Rat von Günther und schreibst:
Delphi-Quellcode:
Wenn ich das richtig in Erinnerung habe, entscheidet seit einigen Versionen Windows selbst wann etwas dargestellt wird und bemüht dazu in diesem Fall den OnPaint-Event des Forms.
procedure TForm1.Button1Click(Sender: TObject);
begin Invalidate; end; .... procedure TForm2.FormPaint(Sender: TObject); begin PaintMyData; end; |
AW: Canvas Zeichnet nicht
das isn Argument!
OK dann wird ich das nachher mal ausprobieren. Gruß K-H |
AW: Canvas Zeichnet nicht
Ich bin nicht sicher, aber vermutlich muss der Formular(canvas)inhalt auch noch in den Screen kopiert werden und dafür braucht Windows einen Anlass.
Möglicherweise verhält sich Deine Anwendung auch unter verschiedenen Systemen unterschiedlich - je nach Grafikeinstellungen. Hast Du den Tipp von Günther mal probiert? |
AW: Canvas Zeichnet nicht
Zitat:
Canvas.drawline Canvas.moveto bzw.. PaintMyData; befindet sich im OnPaint Event der Form was durch Invalidate aufgerufen wird. gruss |
AW: Canvas Zeichnet nicht
Fehlt da nicht Canvas.BeginScene .EndScene ?
Rollo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz