Bonjour,

Ce week-end mon addiction au TPath s'est confirmée
J'ai voulu pousser le bouchon le plus loin possible et, entre autres, ajouter des dessins à des dessins et ce à l'exécution (attention jouer à ça est très très addictif)
Nom : Capture_1.PNG
Affichages : 317
Taille : 19,8 Ko
Bref, j'ai voulu aussi tester la propriété Data.StyleLookup. Pour ce faire, j'ai ajouté un stylebook et dans celui-ci ajouté un Tpath contenant donc un dessin tout prêt
Nom : Capture_2.PNG
Affichages : 299
Taille : 30,9 Ko
Sources dans ce post

Seulement voilà, deux problèmes surgissent si l'on utilise un stylelookup
1 - on ne peut pas l'ajouter à des données existante (par exemple j'aurais voulu ajouter le casque (contenu dans le style) au coeur (un data défini dans une constante)

2 - impossible d'effacer le stylebook une fois défini. J'ai isolé ce test dans un petit programme qui permet de vérifier que changer le stylelookup d'un bouton fonctionne
mais que changer le StyleLookup du TPath.Data ne fonctionne pas
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
unit Unit44;
 
interface
 
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.ListBox,
  FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects;
 
type
  TForm44 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    Path1: TPath;
    StyleBook1: TStyleBook;
    Button2: TButton;
    Panel1: TPanel;
    procedure ComboBox1ClosePopup(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
 
var
  Form44: TForm44;
 
implementation
 
{$R *.fmx}
 
procedure TForm44.Button2Click(Sender: TObject);
begin
if Panel1.StyleLookup.IsEmpty
  then Panel1.StyleLookup:='droid'
  else Panel1.StyleLookup:='';
if Path1.data.StyleLookup.IsEmpty
  then Path1.Data.StyleLookup:='droid'
  else begin
         Path1.Data.StyleLookup:=''; // ????
       end;
 
end;
 
procedure TForm44.ComboBox1ClosePopup(Sender: TObject);
begin
Button1.StyleLookup:=ComboBox1.Items[Combobox1.ItemIndex];
end;
 
end.
Vous remarquerez que c'est peut-être un bug Delphi car au design si l'on met un stylelookup cela fonctionne mais on ne peut plus l'effacer même si ensuite à l'exécution le stylelookup n'est pas pris en compte s'il est effacé

Bref, si quelqu'un à une idée, je suis preneur