Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Blaue Farbe von TListGroup-Titel in TListView (https://www.delphipraxis.net/161719-blaue-farbe-von-tlistgroup-titel-tlistview.html)

s.h.a.r.k 17. Jul 2011 15:22

Blaue Farbe von TListGroup-Titel in TListView
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

bin gerade auf der Jagd nach der genauen Farbe des TListGroup-Titels einer TListView. Im Anhang könnt ihr sehen, welche Farbe ich meine.

Ich bin immerhin schon auf die Methode ListView_GetGroupMetrics gestoßen, die mir aber leider noch keinerlei sinnvolle Farbe geliefert hat. Der folgende Code liefert mir immer clBlack, da GM.crHeader gleich 0 ist:
Delphi-Quellcode:
var
  GM : TLVGroupMetrics;
  CR : COLORREF;
  C : TColor;
begin
  ListView_GetGroupMetrics(ListViewLogMessages.Handle, GM);
  CR := GM.crHeader;
  C := ColorToRGB(CR);
end;
Zudem noch eine Info: Eigentlich will ich auf eine ListView verzichten, wenn ich auf die Farbe zugreifen will!

Andreas L. 17. Jul 2011 15:31

AW: Blaue Farbe von TListGroup-Titel in TListView
 
Unter Vista: $00993300;

Unter Win XP ist die Farbe ein bisschen heller.

s.h.a.r.k 17. Jul 2011 15:33

AW: Blaue Farbe von TListGroup-Titel in TListView
 
Und woher weißt du das? Gibts für sowas eine API? Oder entsprechende Konstanten?

s.h.a.r.k 17. Jul 2011 16:48

AW: Blaue Farbe von TListGroup-Titel in TListView
 
So, kann mir die Antwort nun selbst geben, nachdem ich noch ein wenig tiefer gegraben habe. Man kann über die Methoden und Konstrukte aus den Klassen UxTheme und Themes so ziemlich jede Komponentenfarbe ermitteln. Hier mal der Code für mein Problem:
Delphi-Quellcode:
uses
  UxTheme,
  Themes;

var
  LTheme : HTHeme;
  LColor: Cardinal;
begin
  LTheme := ThemeServices.Theme[teListView];
  if GetThemeColor(LTheme, LVP_GROUPHEADER, PBS_NORMAL, TMT_HEADING1TEXTCOLOR, LColor) = S_OK then
    CB.Canvas.Font.Color := LColor;
end;
Problem dabei ist nur, dass man sich erst mal alle Konstanten raussuchen und diese dann auch noch passend kombinieren muss :stupid:

Andreas L. 18. Jul 2011 06:32

AW: Blaue Farbe von TListGroup-Titel in TListView
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1112263)
Und woher weißt du das?

Ich habe einfach einen Screenshot gemacht und dann mit Paint.Net die Farbe ermittelt.

Sherlock 18. Jul 2011 09:42

AW: Blaue Farbe von TListGroup-Titel in TListView
 
Zitat:

Zitat von Andreas L. (Beitrag 1112319)
Zitat:

Zitat von s.h.a.r.k (Beitrag 1112263)
Und woher weißt du das?

Ich habe einfach einen Screenshot gemacht und dann mit Paint.Net die Farbe ermittelt.

Fünffach gemessen und dann arithmetisch gemittelt? Vorher auch ClearType abgeschaltet? ;)
Ich denke die Methode über UXThemes ist etwas zuverlässiger, vor allem, wenn man ein anderes Theme verwendet :D

Sherlock

s.h.a.r.k 18. Jul 2011 12:30

AW: Blaue Farbe von TListGroup-Titel in TListView
 
Zitat:

Zitat von Andreas L. (Beitrag 1112319)
Zitat:

Zitat von s.h.a.r.k (Beitrag 1112263)
Und woher weißt du das?

Ich habe einfach einen Screenshot gemacht und dann mit Paint.Net die Farbe ermittelt.

Dank für die Info, aber dabei hatte ich sehr viele Bauchschmerzen! :stupid: Eben aus den Gründen, die Sherlock genannt hat. Daher habe ich mich nochmals auf die Suche gemacht. Bin übrigens über die ColorMaps auf diese Idee gekommen, falls es noch jemanden interessieren sollte.

Andreas L. 18. Jul 2011 13:45

AW: Blaue Farbe von TListGroup-Titel in TListView
 
Ich habe für meine Komponente nur die Farbe unter Vista als Startwert für eine TColor-Property gebraucht. Wenn der User der Meinung ist, die Kompo sollte unter Windows XP oder 7 oder wie auch immer die Systemfarbe haben, kann er sich das selber implementieren ;-)

EDIT: Aber da mir dank dir, s.h.a.r.k, jetzt eine Möglichkeit bekannt ist, die Systemfarbe zu ermitteln, werde ich das evtl. einfließen lassen :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz