Bonjour,
Je m'arrache les cheveux depuis plusieurs jours pour trouver la couleur clwindowtext après avoir changé de thème.
En fait je voudrais savoir si c'est du blanc ou du noir (ou une autre couleur) pour modifier la couleur d'une brush dans un stringgrid
En effet, lorsque je teste la couleur de la fonte de mon stinggrid, je trouve -16777208, ce qui ne correspond pas vraiment à une valeur Tcolor, qui devrait être constituée de 4 groupe de 2 octets (si j'ai bien compris).
J'ai cru comprendre que cette valeur correspondait à la constante clwindowtext, mais je me trompe peut-être aussi.
J'ai aussi essayé d'utiliser une fonction Vcl.Themes.TCustomStyleServices.getstylefontcolor(sfWindowTextNormal), mais je me heurte à une mauvaise mise en oeuvre de ma part car cela me fait soit une erreur de compilation, soit une exception "erreur abstraite" à l'exécution ...
En gros, j'essaye comme ça
et sur la ligne "couleurfontetexte:=css.getstylefontcolor(sfWindowTextNormal);", ça me fait une exception erreur abstraite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, vcl.Themes; type TForm1 = class(TForm) ListBox1: TListBox; procedure ListBox1DblClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; stylemanager: TStyleManager; css:tcustomstyleservices; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin stylemanager:=TStyleManager.create; css:=TCustomStyleServices.create; end; procedure TForm1.ListBox1DblClick(Sender: TObject); var couleurfontetexte: Tcolor; begin styleManager.Trysetstyle(ListBox1.items[ListBox1.itemindex]); couleurfontetexte:=css.getstylefontcolor(sfWindowTextNormal); end; end.
Je cale là-dessus et je ne m'en sors pas alors qu'il y a peut-être une méthode très simple.
Merci à ceux qui pourraient m'aider.
Bien cordialement
Partager