Bonjour,
j'ai recensé au moins 5 manières de changer de style à l'exécution (dans ce programme j'utilise Light.style et Dark.style)
Si sous windows c'est opérationnel sous Android ça coince, les trois premières manières fonctionnent (encore qu'il faille se méfier de la casse en ce qui concerne les noms de fichiers et même de ressource!)
mais dès qu'il s'agit de cloner le style
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
49
50
51
52
53 procedure TForm1.rbStyleManagerChange(Sender: TObject); begin if rbStyleManager.IsChecked then begin sassurerusestylemanageroff; var aStyleBook: TStyleBook := nil; aStyleBook:=TStyleBook(FindComponent(ComboBox1.Items[Combobox1.ItemIndex])); // Light ou Dark if aStyleBook<>nil then begin // Clone le style {$IFDEF ANDROID} // TStyleManager.SetStyle(astylebook.Style.Clone(nil)); TStyleManager.SetStyle(astylebook.Style); {$ELSE} TStyleManager.SetStyle(aStyleBook.Style.Clone(nil)); {$ENDIF} inmemo('StyleManagerChange'); end; TStyleManager.UpdateScenes; end; end; procedure TForm1.rbTstylebookUseManagerChange(Sender: TObject); begin if rbTstylebookUseManager.IsChecked then begin // TStyleManager.RemoveStyleFromGlobalPool(TStyleManager.ActiveStyle(nil)); case combobox1.ItemIndex of 1 : begin Light.UseStyleManager:=False; Dark.UseStyleManager:=True; {$IFDEF ANDROID} // TStyleManager.SetStyle(dark.Style.Clone(nil)); TStyleManager.SetStyle(dark.Style); {$ELSE} TStyleManager.SetStyle(dark.Style.Clone(nil)); {$ENDIF} end else begin Dark.UseStyleManager:=False; Light.UseStyleManager:=true; {$IFDEF ANDROID} TStyleManager.SetStyle(Light.Style.clone(nil)); {$ELSE} TStyleManager.SetStyle(Light.Style.Clone(nil)); {$ENDIF} end; end; inmemo('StyleBookUseManager'); TStyleManager.UpdateScenes; end; end;
sous Android, que ce soit Style.clone(self) ou style.clone(nil) c'est la douche froide
Si je ne clone pas, alors cela fonctionne une fois mais pas deux
enfin le mémo reste affiché mais le reste ne semble pas se redessiner.
Après une semaine de galère, je me résouds donc à vous jeter un appel.
Si quelqu'un veut s'essayer à l'ensemble (si en plus vous avez un mac et un iphone) je serais heureux d'avoir un retour donc je vous soumet les sources
P.S. vous serez peut-être quand même obligé de changer les ressources
Partager