Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Windows 10 Fenstertitelfarbe ermitteln (https://www.delphipraxis.net/187959-windows-10-fenstertitelfarbe-ermitteln.html)

DCoderHH 19. Jan 2016 16:18

Windows 10 Fenstertitelfarbe ermitteln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

wie kann ich unter Windows 10 die Farbe der Fenstertiteleiste (aktiv und inaktiv) ermitteln?

Bei mir ist die aktive auf blau und die inaktive auf weiß eingestellt. Zu sehen im angehängten Bildschirmfoto.

Danke :-)

Uwe Raabe 19. Jan 2016 16:27

AW: Windows 10 Fenstertitelfarbe ermitteln
 
GetSysColor

himitsu 19. Jan 2016 16:33

AW: Windows 10 Fenstertitelfarbe ermitteln
 
clActiveCaption clInactiveCaption ColorToRGB

Aber z.B. bei Windows 7 mit den Styles ist das nicht mehr so einfach.

DCoderHH 20. Jan 2016 09:04

AW: Windows 10 Fenstertitelfarbe ermitteln
 
Danke, aber weder GetSysColor noch clActiveCaption/clInactiveCaption liefern die richtigen Farben. clActiveCaption/clInactiveCaption werden von Delphi mit GetSysColor belegt, daher haben diese Konstanten exakt die selben Farben.

Windows 7 ist nicht wichtig. Ich brauche das nur für Window 10. Muss/kann man das evtl. über die Themes irgendwie auslesen?

DCoderHH 20. Jan 2016 09:05

AW: Windows 10 Fenstertitelfarbe ermitteln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier noch ein Bild, wie die Farben sein sollen wie und sie aber mit den oben genannten Lösungen falsch aussehen.

Uwe Raabe 20. Jan 2016 09:19

AW: Windows 10 Fenstertitelfarbe ermitteln
 
Wo hast du denn die verwendeten Farben eingestellt?

DCoderHH 20. Jan 2016 09:26

AW: Windows 10 Fenstertitelfarbe ermitteln
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1327559)
Wo hast du denn die verwendeten Farben eingestellt?

Im Code per:

Delphi-Quellcode:
pSysColorActive.Color := GetSysColor(COLOR_ACTIVECAPTION);
pSysColorInactive.Color := GetSysColor(COLOR_INACTIVECAPTION);

Der schöne Günther 20. Jan 2016 09:45

AW: Windows 10 Fenstertitelfarbe ermitteln
 
Kann ich bestätigen, mir geht es genauso.

Nicht vergessen: Mit Windows 10 waren erst einmal alle Fenster weiß. Egal ob aktiv oder inaktiv. Erst seit dem "November-Update" kann man einstellen dass die "Benutzerfarbe" sich auch auf die Titelbar des aktiven Fensters auswirkt. Das ist die gleiche Farbe die man z.B. auch im Action Center oder Startmenü haben kann.

DCoderHH 20. Jan 2016 09:49

AW: Windows 10 Fenstertitelfarbe ermitteln
 
Ich vermute sogar, dass GetSysColor(COLOR_ACTIVECAPTION) auch unter Windows 8 nicht funktioniert, da in der Hilfe die Rede von einem Farbverlauf ist, den es schon bei Windows 8 und 8.1 nicht mehr gab. Wer kann das mal testen?

himitsu 20. Jan 2016 10:13

AW: Windows 10 Fenstertitelfarbe ermitteln
 
Zitat:

Windows 7 ist nicht wichtig. Ich brauche das nur für Window 10. Muss/kann man das evtl. über die Themes irgendwie auslesen?
Seit XP und vorallem seit Vista/7 werden die Fenster vom System geskinnt und daher stimmen die "alten" APIs nicht mehr ganz.

Was man zumindestens machen kann, ist sich von Windows das Control (hier ein Fenster mit Rahmen) in ein Bitmap zeichnen zu lassen oder halt über den Desktop an ein Fenster ran zu gehen und dann die Farbe eines Pixels auszulesen.

DCoderHH 20. Jan 2016 12:14

AW: Windows 10 Fenstertitelfarbe ermitteln
 
Zitat:

Zitat von himitsu (Beitrag 1327567)
Was man zumindestens machen kann, ist sich von Windows das Control (hier ein Fenster mit Rahmen) in ein Bitmap zeichnen zu lassen

Wie macht man das?

himitsu 20. Jan 2016 13:35

AW: Windows 10 Fenstertitelfarbe ermitteln
 
https://msdn.microsoft.com/en-us/lib.../dd162760.aspx
MSDN-Library durchsuchenDrawFrameControl

Delphi-Referenz durchsuchenTThemeServices.DrawElement

http://www.delphi-treff.de/tipps-tri...lage-kopieren/
http://www.delphipraxis.net/114571-s...speichern.html

Uwe Raabe 20. Jan 2016 13:51

AW: Windows 10 Fenstertitelfarbe ermitteln
 
Eigentlich sollte es auch möglich sein mit StyleServices.ColorToRGB das gewünschte Ergebnis zu bekommen - habe das aber jetzt nicht ausprobiert.

Sherlock 22. Jan 2016 13:24

AW: Windows 10 Fenstertitelfarbe ermitteln
 
Meines Erachtens ist es viel zu aufwendig das zu machen. Man vergißt sehr gerne folgende Konstellation, die ich übrigens verwende: Wechselnde Desktopbilder kombiniert mit automatisch angepaßter Farbgebung. Am leichtesten kann man das "erleben" indem man ein sogenanntes Design herunterlädt und ausprobiert (http://windows.microsoft.com/de-de/w..._client_themes). Will man es also richtig machen, müßte man also ein entsprechendes Systemereignis überwachen, daß mitteilt, daß sich mal wieder die Farbgebung geändert hat. Dann müßte man die komplette Applikation dieser geänderten Farbe anpassen. Darum sollte man in Applikationen die Standardfarben verwenden, die von MS bzw. Embarcadero vorgeschlagen werden.

Sherlock

Redeemer 25. Jan 2016 17:38

AW: Windows 10 Fenstertitelfarbe ermitteln
 
Und wenn gar nichts mehr geht, dann mit TForm.GlassFrame die Farbe als Hintergrund nutzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 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 by Thomas Breitkreuz