Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Clientarea neu definieren?


delphia - So 05.06.11 17:09
Titel: Clientarea neu definieren?
Hallo,

folgende Situation: Neue Komponente abgeleitet von TPanel. Überschrieben habe ich die Paint() Methode. Dort ermittle ich die Clientarea des Panles und zeichne oben und unten mit einer gewissen Einrückung mit Textout quasi Kopfzeile und Fusszeile. Funktioniert auch ganz prima.

Ein Problem gibt es nur, wenn ich ein Control auf das Panel setze und Align die Option alClient zuordne. Denn dann wird das Control, also z.B. eine Grid auf den ganzen Clientbereich des Panels gezogen. Damit natürlich dann meine Textausgaben verdeckt/überlagert.

Was muss ich machen damit das Clientarea neu definiert wird. Einfach neu definieren ist nicht, da ich ja in der Paint Methode die Clientarea ermittle und danach mein Textout setze. Wenn nun also in jedem Paint Event die Clientarea verkleinere dann ...

Danke!


Thom - So 05.06.11 22:58

[url=http://msdn.microsoft.com/en-us/library/ms632634(v=vs.85).aspx]WM_NCCALCSIZE[/url] abfangen. Da Du dann aber außerhalb des eigentlichen Client-Bereichs zeichnest, muß Du auch WM_NCPAINT und bei Bedarf WM_ERASEBKGND verarbeiten.

P.S.: Crossposting im der Delphi-Praxis [http://www.delphipraxis.net/160866-client-area-neu-festlegen.html]!