![]() |
Re: Eigene Button Komponente
Den PaintHandler kann ich nicht überschreiben sagt er mir weil er statisch ist, aber jetzt klappt alles einigermaßen ;-)
|
Re: Eigene Button Komponente
Hi,
was ist denn das? Zitat:
Zitat:
Und warum TBitmap? Normaler Weise sollte es so aussehen:
Delphi-Quellcode:
Damit ist es egal ob die Quelle eine Bitmap, JPEG, PNG oder sonst etwas ist.
TGraphicButton = class(TCustomControl)
private ... FPicture: TPicture; procedure SetPicture(Value: TPicture); ... property Picture: TPictureread FPicture write SetPicture; end; Bezüglich des Overheat sollte allerdings von TGraphicControl abgeleitet werden, steht auch so in der Hilfe. |
Re: Eigene Button Komponente
Zitat:
Delphi-Quellcode:
Wenn du den PaintHandler nicht überschreibst, dann malt der nämlich auch immer noch ein bisschen mit, und zwar initialisiert der vorab die Grundfläche deines Controls mit der Parent-Color. Und erst darauf pinselst Du dann wieder (wahrscheinlich auch zuerst eine Initialisierung mit der clBtnFace-Color o.ä.). Es ist also besser, wenn man seine Malarbeiten gleich selbst in diesem PaintHandler ausführt. Ansonsten könnte es u.U. durch dessen eigenes Initialisieren mit der Parent-Color auch noch zu einem leichten Flackern kommen.
private
... procedure PaintHandler(var AMessage : TWMPaint); message wm_Paint; public ... Bzgl. des PaintHandlers wäre dann eigentlich nur noch mehr wichtig, dass die ganzen Arbeiten dort in ein BeginPaint u. EndPaint eingekleidet sind:
Delphi-Quellcode:
so z.B., oder eben alles +/- ziemlich ähnlich, natürlich :-D
procedure TOwnButton.PaintHandler(var AMessage: TWMPaint);
var APaintStruct : TPaintStruct; begin BeginPaint(Handle,APaintStruct); // primäres Initialisieren der Button-Grundfläche ... with Canvas do if not ButtonIsPressed then begin // wenn der "Button" NICHT gedrückt ist // dann event. ein Bitmap malen mit BitBlt o. TransparentBlt ... // dann eine Caption schreiben ... // dann den Rahmen pinseln ... // und ganz zum Schluß event. noch einen Focus-Ring malen ... end else begin // dann ist der "Button" gedrückt... // wie darüber, nur eben jetzt bzgl. einer gedrückten Button ... end; EndPaint(Handle,APaintStruct); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 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