trouver la couleur de clwindowtext
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
Code:
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. |
et sur la ligne "couleurfontetexte:=css.getstylefontcolor(sfWindowTextNormal);", ça me fait une exception erreur abstraite.
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