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: 576
- Registriert: Sa 22. Okt 2016, 23:12
- OS, Lazarus, FPC: W10, L 2.2.6
- CPU-Target: 32+64bit
- Wohnort: Dresden
Re: Hintergrundfarbe von Form ermitteln
Hi,
Sicher geht das, für das Form geht das über Color:= +Farbe;
siehe http://wiki.freepascal.org/Colors
400kmh hat geschrieben:...Ursprünglich wollte ich diese Farbe ändern, das scheint aber bei Windows nicht zu gehen...
Sicher geht das, für das Form geht das über Color:= +Farbe;
siehe http://wiki.freepascal.org/Colors
LG Maik
Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)
Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)
Re: Hintergrundfarbe von Form ermitteln
sstvmaster hat geschrieben:Hi,400kmh hat geschrieben:...Ursprünglich wollte ich diese Farbe ändern, das scheint aber bei Windows nicht zu gehen...
Sicher geht das, für das Form geht das über Color:= +Farbe;
siehe http://wiki.freepascal.org/Colors
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.
-
- Beiträge: 1914
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Hintergrundfarbe von Form ermitteln
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.
Da hast du praktisch 3 Möglichkeiten:
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;
Was es genau mit der Trackball auf sich hat weiß ich nicht, kann aber gut sein das es Controls gibt die sich eigen verhalten
-
- Beiträge: 576
- Registriert: Sa 22. Okt 2016, 23:12
- OS, Lazarus, FPC: W10, L 2.2.6
- 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) 100-mal heruntergeladen
LG Maik
Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)
Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)