Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Farbe im TDateTimePicker zu laufzeit ändern


Metschu - So 10.07.11 20:53
Titel: Farbe im TDateTimePicker zu laufzeit ändern
Hallo zusammen!

Ich möchte zur Laufzeit die Hintergrundfarbe des TDateTimePickers bei bestimmten Bedingungen ändern.

Problem ist nun, das die Farbänderung erst dann sichtbar wird, wenn ich auch das Datum ändere, also an der Komponente selbst eine Aktion ausführe.

"Update", "Refresh" und "Repaint" brachten keinen Erfolg.

Die Farbe wird über ".brush.color" geändert.

Hat jemand nen Tip?

Gruß

Torsten


jaenicke - So 10.07.11 22:08

Was willst du jetzt ändern? Die Hintergrundfarbe (Color) oder die Schrifthintergrundfarbe (Brush.Color)? :gruebel:

Brush.Color ändert die Schrifthintergrundfarbe, wenn das nächste Mal ein Text im Control neu gezeichnet wird.

Wenn du wirklich den Hintergrund insgesamt ändern willst, musst du nur Color ändern, das hat mit dem Brush nichts zu tun...

Funktionieren tut das logischerweise nur ohne Manifest im Windows 9x Look, wenn du nicht möchtest, dass Windows das Zeichnen selbst im aktuellen Windows Theme übernimmt. Das sieht also dementsprechend schlecht aus. :nixweiss:


Metschu - Mo 11.07.11 08:54

Ich möchte die Schrifthintergrundfarbe im "eingeklappten" Zustand ändern.

Die Farbe wird auch angenommen, wenn ich diese vorgebe. Wird die Farbe während der Laufzeit geändert, wird die Änderung aber erst sichtbar, wenn dasn Element "Aus-/Eingeklappt" wird bzw das wenn ich den Text (Datum) manuell ändere.

Jetzt habe ich nur die Eigenschaft "Color" geändert und dann klappts. "Brush.color" wirds nur wie oben beschrieben geändert.

Komischerweise gibt es Elemente, die man nur mit "Brush.color" ändern kann, andere nur mit "Color". Die Hilfe sagt aber bei beiden "Das es Farbe des Hintergrundes des Steuerelementes angibt..."

Naja, jetzt gehts wenigstens.


Kay E. - Di 12.07.11 13:53

Nur mal blöd gefragt: In deiner Auflistung oben fehlt invalidate;. Hast du das schon probiert?