Hintergrundfarbe von Form ermitteln

Für Fragen von Einsteigern und Programmieranfängern...

Hintergrundfarbe von Form ermitteln

Beitragvon 400kmh » 31. Dez 2018, 11:02 Hintergrundfarbe von Form ermitteln

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.
400kmh
 
Beiträge: 78
Registriert: 25. Mär 2010, 04:03

Beitragvon sstvmaster » 31. Dez 2018, 12:09 Re: Hintergrundfarbe von Form ermitteln

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
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 107
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 2.0 RC3 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon 400kmh » 31. Dez 2018, 13:01 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.
400kmh
 
Beiträge: 78
Registriert: 25. Mär 2010, 04:03

Beitragvon Warf » 31. Dez 2018, 14:34 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
Warf
 
Beiträge: 1047
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon sstvmaster » 31. Dez 2018, 17:12 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)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 107
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 2.0 RC3 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried