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 Problem mit repaint bei eigener Komponente (https://www.delphipraxis.net/16837-problem-mit-repaint-bei-eigener-komponente.html)

SirThornberry 24. Feb 2004 13:18


Problem mit repaint bei eigener Komponente
 
Ich hab mir eine neue Komponente von TWinControl abgeleitet (nachfolgend MyCom1 genannt) und darin befinden sich mehrere Buttons. Dann habe ich ein "FadePanel" welches über MyCom1 fadet. Wenn das Pannel dann über MyCom1 weg fadet wird ja die wm_paint an MyCom1 gesendet und alle Buttons darin werden auch repaintet egal ob sie davon betroffen sind oder nicht. Um dies zu verhinern ab ich wm_paint abgefangen und verwurfen.

Mein Problem ist jetzt das ich nicht weiß wie ich herausfinde welchen Button ich manuell repainten muss weil das panel darüber weg ist und welchen nicht. Wie kann ich herauffinden welchen Teil ich von meiner Komponenten repainten muss. also das betroffene rect?

Tonic1024 24. Feb 2004 13:41

Re: Problem mit repaint bei eigener Komponente
 
Hi...

Kannst du nicht statt wm_paint ganz wegzulassen es bedingt laufen lassen? Die bedingung kannst du dann ja nach Bedarf definieren, jenachdem was du mit dem rect (Shape?) anstellst...

SirThornberry 25. Feb 2004 06:33

Re: Problem mit repaint bei eigener Komponente
 
eben das hab ich ja vor, nur weiß ich nicht wo ich die info her bekomme welcher teil meiner komponente neu gezeichnet werden soll. Es kommt ja nur die wm_paint und ich weiß nicht ob es für die ganze komponente gilt oder ob es reichen würde die linke obere ecke neu zu painten

teebee 25. Feb 2004 10:14

Re: Problem mit repaint bei eigener Komponente
 
Schau Die mal die API-Funktion 'GetUpdateRect' an. (Als Alternative dazu kannst Du 'BeginPaint' und 'EndPaint' benutzen.)
Mit 'PtInRect' kannst Du überprüfen, ob die Eckpunkte Deiner Buttons innerhalb des Update-Bereichs liegen und sie dann zum Neuzeichnen auffordern.

Gruß, teebee


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:38 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