Changer de style au runtime
Bonjour, (10.3.3)
Il m'est venu à l'idée de charger le style principal de mon application à partir d'une base de données (objectif : donner une couleur différente en fonction de la société en cours)
Voilà en gros le code de chargement du style :
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
|
AQuery:=TFDQuery.Create(Self);
try
AQuery.Connection:=ConnexionBase;
AQuery.SQL.Text:='SELECT * FROM SETTINGS WHERE ID=0';
AQuery.Active:=True;
// Changement des FormatSettings en fonction de la société
if not AQuery.FieldByName('ID').IsNull then
TFormatSettings.Create(AQuery.FieldByName('IDLANG').asInteger);
// Changement de style
if not AQuery.FieldByName('Style').isNull then
begin
AStream:=TmemoryStream.Create;
try
TBlobField(AQuery.FieldByName('STYLE')).SaveToStream(AStream);
AStream.Position:=0;
StyleSociete.LoadFromStream(AStream);
finally
AStream.Free;
end;
end
else StyleSociete.Clear;
AQuery.Active:=False;
finally
AQuery.Free;
end; |
Le hic, quand je change de société et que je charge le style le cadre windows avec son titre et ses boutons "système" disparait :calim2:
Je dois louper quelque chose de tout bête !
- si après chargement je fais un ApplyStyleLookup cela ne change rien