![]() |
FillRect zeichnet keinen Hintergrund
Hallo zusammen,
ich möchte für eine von TPanel abgeleitete Komponente den Hintergrund zeichnen. Siehe angefügten Quelltext. Die Ränder werden wie erwartet richtig gezeichnet, der Hintergrund bleibt weiß. Habe alles mögliche versucht, der Hintergrund wird nicht farbig. Kann da jemand helfen?
Delphi-Quellcode:
TFarbQuadrat = class(TPanel) private FColor: TAlphaColor; protected procedure SetColor(aColor: TAlphaColor); procedure Paint; override; procedure Click; override; public constructor Create(aOwner : TComponent); override; destructor Destroy; override; property Color: TAlphaColor read FColor write SetColor; end; procedure TFarbQuadrat.Paint; begin inherited; Canvas.BeginScene; // Hintergrund malen Canvas.Fill.Kind := TBrushKind.Solid; Canvas.Fill.Color := Color; Canvas.FillRect(LocalRect, 1); Canvas.EndScene; Canvas.BeginScene; // Rahmen malen Canvas.Stroke.Kind := TBrushKind.Solid; Canvas.Stroke.Color := claBlack; if IsFocused then begin Canvas.Stroke.Thickness:=3; end else begin Canvas.Stroke.Thickness:=1; end; Canvas.DrawRect(LocalRect, 1); Canvas.EndScene; end; |
AW: FillRect zeichnet keinen Hintergrund
Gibt es einen VCL-Style, der reinpfuschen könnte? (In dem Fall müsste man seClient aus TPanel.StyleElements rausnehmen)
|
AW: FillRect zeichnet keinen Hintergrund
???
Verstehe ich nicht. Es handelt sich um ein FMX-Programm. Den Constructor (Testversion) habe ich hier:
Delphi-Quellcode:
constructor TFarbQuadrat.Create(aOwner : TComponent);
begin inherited Create(aOwner); Color:= TAlphaColorRec.DarkGray; CanFocus:=True; Size.Width:=20+20; Size.Height:=20+20; StyleLookup:=''; Opacity:=1; Visible:=True; Enabled:=True; end; |
AW: FillRect zeichnet keinen Hintergrund
Hm, auf FMX ist das Komponentenfarben ändern ohne die Verwendung von Stylebooks etwas problematisch.
Ich kann dir nicht garantieren, dass es nicht auch noch andere Möglichkeiten gibt und ich kenne den genauen Anwendungsfall nicht, aber die einfachste Variante zum Setzen von Hintergrundfarben ohne Stylebooks ist das TRectangle. Das TRectangle verhält sich mehr oder weniger wie ein Panel, man kann dem Teil aber direkt die Hintergrundfarbe über TRectangle.Fill.Color einstellen. Die Namensgebung deiner Klasse "TFarbQuadrat" impliziert zumindest, dass das TRectangle evtl genau das sein könnte, was haben willst. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 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