![]() |
TcxGroupBox und dessen echte Farbe?
Moin,
wie bekommt man von einem TcxGroupBox die tatsächlich angezeigte Hintergrundfarbe raus? Problem: Eine Komponente (z.B. TLinkLabel), die nicht transparent ist, nimmt sich über ParentColor die falsche Farbe, was natürlich echt besch* aussieht. In sowas wie .Color oder .Style.Color steht nicht die richtige Farbe drin. Wer ist eigentlich auf die saublöde Idee gekommen das TLinkLabel nicht einfach von TCustomLabel abzuleiten? :wall: |
AW: TcxGroupBox und dessen echte Farbe?
Hallo,
ich kenne die Komponente nicht, aber sollte die nicht ein Canvas haben und der Canvas eine Farbe (color)? ![]() Grüße Klaus |
AW: TcxGroupBox und dessen echte Farbe?
Also ich nehme eine TCxCheckBox, schmeiss sie auf ne Form, ändere die Farbe der Form und -wupps- ist cxCheckBox1.Color angepasst.
|
AW: TcxGroupBox und dessen echte Farbe?
Ich will sie ja nicht setzen, sondern auslesen.
Und {Component}.Canvas.Brush.Color gibt nicht unbedingt die Hintergrundfarbe an, sondern die letzte Brush-Farbe, welche in diesem Canvas zum Zeichnen genutzt wurde. In meinem Testfall war es zufällig "weiß", welches mit dem zarzen Hellgrau grade noch ertragbar währe, aber wie gesagt, das war wohl eher Zufall. PS: Das ist eine mehrfach abgeleitete Komponente und irgendwo tief im System versteckt wird zur Runtime ein irgendein Style zugewiesen. Wäre ja zu einfach, wenn DevExpress dabei an .Color die aktuelle Farbe zuweisen würde, was aber nicht gemacht wird. Ach ja, eine TcxCheckBox weiß was Transparenz ist und bei ihren eigenen Komponenten haben die bestimmt notfalls einen Bugfix eingebaut, bzw. sie wissen wo die echte Farbe zu finden ist, welche nötig ist. Hier handelt es sich um eine Komponente mit Pseudotransparent, welche nicht wirklich transparent ist, aber für's Zeichen die Parent.Color verwendet, welche aber von DevExpress falsch/nicht gesetzt wird. |
AW: TcxGroupBox und dessen echte Farbe?
himitsu, wie ich schon schrieb, entspricht bei mir die Eigenschaft 'Color' der TcxCheckbox der Hintergrundfarbe der dahinterliegenden Form. Es scheint, sie würde sich anpassen. Transparent ist das Teil jedenfalls nicht, denn über einem TDBGrid, das da so zufällig rumlag, war die 'Hintergrundfarbe' der TcxCheckbox nicht etwa weiß, wie das Grid, sondern maroon, wie die Form.
Wie gesagt, es scheint sich bei mir anzupassen. |
AW: TcxGroupBox und dessen echte Farbe?
Code:
Die Hilfe zu TcxDefaultEditStyleController beschreibt die Funktionsweise eigentlich ganz gut.
TcxGroupBox
ParentBackground ParentColor -> Wenn True wird Color im Style ignoriert Style AssignedValues -> bestimmt welche Properties individuell für diese Komponente festgelegt sind Color StyleController -> nicht festgelegte Properties werden von hier bezogen (oder DefaultController) StyleDisabled AssignedValues Color Transparent In TcxContainer als protected deklariert:
Delphi-Quellcode:
function GetBackgroundColor: TColor; virtual;
|
AW: TcxGroupBox und dessen echte Farbe?
Zitat:
Aber dennoch: Solange in Control.Color nicht die Farbe drinsteht, welche wirklich als Hintergrundfarbe verwendet wird, kann ParentColor ja nur Mist erzeugen. Und wenn die es schon nicht schaffen .Color richtig zu setzen, warum gibt es dann keine Methode ala "MirIstEgalWasSonstwoStehtAberDieEchteHintergrundfarbeIstDiese". :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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