Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Auf Canvas wird erst beim 2. mal gezeichnet (https://www.delphipraxis.net/101054-auf-canvas-wird-erst-beim-2-mal-gezeichnet.html)

Mao 7. Okt 2007 20:25


Auf Canvas wird erst beim 2. mal gezeichnet
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo DP,

lange hab ich keine Frage mehr gehabt - hatte halt auch mal keine Probleme. :zwinker:

Ich habe ein eigenes kleines Control, abgeleitet von TPaintBox, erstellt und dem eine Methode verpasst, um auf dessen Canvas rumzuzeichnen. (Mittels FillRect.)
Vorher wird Color noch auf schwarz gesetzt.

Das Control erstell ich dynamisch erzeugt, das Objekt(?) ist eine globale Variable in main.pas.
Im OnClick-Event eines Buttons ruf ich eine Procedure des Controls auf, (oben beschriebene) die auf dem Canvas rumzeichnet.
Allerdings seh ich erst beim 2. Draufklicken etwas. Und wenn ich zweimal nacheinander die Procedure aufrufen will, gibt's trotzdem keine Veränderung. Nur beim 2. Button-Click passierts. Gleiches wie wenn ich den Code innerhalb der Procedure 2x ausführen lasse.

Ich hab ein Beispielprojekt angehangen.

Ich hoffe, jemand kann mir helfen! :-D

Bis bald,
Mao

/edit:
Falls dies relevant sein sollte, das Projekt wurde mit D6 erstellt und getestet.

Muetze1 7. Okt 2007 22:06

Re: Auf Canvas wird erst beim 2. mal gezeichnet
 
Du weist der Eigenschaft Color eine Farbe zu. Dies ist die Eigenschaft von TPaintBox und die hat diese nur geerbt von TControl. Und diese Eigenschaft wird von niemanden genutzt. Wenn du eine Farbe festlegen willst, welche FillRect nutzt, dann weise eine Farbe z.B. Canvas.Brush.Color zu.

Mao 8. Okt 2007 10:06

Re: Auf Canvas wird erst beim 2. mal gezeichnet
 
Oh. Danke! :)

(Aber warum funktionierte das Ganze dann beim 2. Klick?)

Muetze1 8. Okt 2007 11:01

Re: Auf Canvas wird erst beim 2. mal gezeichnet
 
weil im richtigen Paint der Paintbox (welches ja ausgelöst wird durch die WM_PAINT Botschaften von Windows) und/oder der Basis-Paint Routine aus TControl, wird die Farbe von der Color Eigenschaft übernommen. Nach dem das Paint einmalig ordentlich durchlaufen war, ist der Brush vom dieser Aktion auf den Wert gesetzt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz