Hallo,
wie ermittelt man die Hintergrundfarbe der Form, die ja vom aktuell eingestellten Design des Betriebssystems abhängt? Ursprünglich wollte ich diese Farbe ändern, das scheint aber bei Windows nicht zu gehen, also möchte ich diese Farbe zumindest automatisiert herausfinden und gewisse andere Farbgebungen davon abhängig machen.
Hintergrundfarbe von Form ermitteln
-
- Beiträge: 582
- Registriert: Sa 22. Okt 2016, 23:12
- OS, Lazarus, FPC: W10, L 3.8
- CPU-Target: 32+64bit
- Wohnort: Dresden
Re: Hintergrundfarbe von Form ermitteln
Hi,
siehe http://wiki.freepascal.org/Colors
Sicher geht das, für das Form geht das über Color:= +Farbe;400kmh hat geschrieben:...Ursprünglich wollte ich diese Farbe ändern, das scheint aber bei Windows nicht zu gehen...
siehe http://wiki.freepascal.org/Colors
LG Maik
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
Re: Hintergrundfarbe von Form ermitteln
Allerdings ändert sich damit nicht die Farbe der anderen Elemente darauf. Also über Form1.Color ändert sich zwar die Form-Farbe aber nicht die Farbe z. B. einer Trackbar darauf, und die lässt sich auch nicht über Trackbar.Color ändern.sstvmaster hat geschrieben:Hi,Sicher geht das, für das Form geht das über Color:= +Farbe;400kmh hat geschrieben:...Ursprünglich wollte ich diese Farbe ändern, das scheint aber bei Windows nicht zu gehen...
siehe http://wiki.freepascal.org/Colors
Aber auf der verlinkten Seite wird auch die Farbe clMenu aufgelistet. Die scheint genau das zu sein, was ich alternativ gesucht habe.
-
- Beiträge: 2118
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Hintergrundfarbe von Form ermitteln
Da hast du praktisch 3 Möglichkeiten:400kmh hat geschrieben:Allerdings ändert sich damit nicht die Farbe der anderen Elemente darauf. Also über Form1.Color ändert sich zwar die Form-Farbe aber nicht die Farbe z. B. einer Trackbar darauf, und die lässt sich auch nicht über Trackbar.Color ändern.
Aber auf der verlinkten Seite wird auch die Farbe clMenu aufgelistet. Die scheint genau das zu sein, was ich alternativ gesucht habe.
1. Setze von Controls den Hintergrund auf Transparent, dann haben die keine eigene Hintergrundfarbe
2. Setze ParentColor der Controls auf true, dann übernehmen sie Farbänderungen des Parents
3. Iteriere durch alle Subcontrols und änder die Farbe per Hand:
Code: Alles auswählen
procedure ChangeColor(Control: TControl; Color: TColor)
var I: Integer;
begin
Control.Color = Color;
if Control is TWinControl then
for i:=0 to (Control as TWinControl).ControlCount -1 do
ChangeColor((Control as TWinControl).Controls[i], color);
end;
-
- Beiträge: 582
- Registriert: Sa 22. Okt 2016, 23:12
- OS, Lazarus, FPC: W10, L 3.8
- CPU-Target: 32+64bit
- Wohnort: Dresden
Re: Hintergrundfarbe von Form ermitteln
Das scheint bei der Trackbar entweder so zu sein das sie die Farben nicht ändert, weil es unter anderen WidgetSets das nicht möglich ist oder es ist ein Bug.
Hab mal ein Beispiel angehängt, da kann man das schön sehen wenn man das Theme ändert. (Bei mir hier Windows 7)
Hab mal ein Beispiel angehängt, da kann man das schön sehen wenn man das Theme ändert. (Bei mir hier Windows 7)
- Dateianhänge
-
ColorTest.zip
- (3.96 KiB) 109-mal heruntergeladen
LG Maik
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)