Bonjour à tous,

je souhaite réaliser un programme qui crée des treeviews dynamiques dans un systeme d'onglet crée dynamiquement aussi.
Ces treeview sont alimentés par des objets.

J'ai realisé un petit bout de code tres rapide pour exposer mon probleme (ne pas tenir compte de la non liberation des mes objets, je le ferais proprement, c'est promis, dans mon veritable programme )

Voici le code :

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
54
55
56
57
58
type
 TMaClass = class
  sInfo : string ;
end ;
 
type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    GroupBox1: TGroupBox;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
   i        : integer ;
   tsLeft   : TTabSheet ;
   tvLeft   : TTreeView ;
   ObjClass : TMaClass ;
   Node     : TTreeNode ;
   Mytree   : TTreeView ;
   procedure tvOnClick(Sender : TObject);
  public
    { Déclarations publiques }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 ObjClass               := TMaClass.Create ;
 ObjClass.sInfo         := Edit1.Text ;
 tsLeft                 := TTabSheet.Create(PageControl1);
 tsLeft.Parent          := PageControl1 ;
 tsLeft.Name            := 'Tab'+IntToStr(i);
 tsLeft.Caption         := 'Tab'+IntToStr(i);
 tsLeft.PageControl     := PageControl1 ;
 tvLeft                 := TTreeView.Create(PageControl1) ;
 tvLeft.Name            := 'Tree'+IntToStr(i);
 tvLeft.Align           := alClient ;
 tvLeft.Parent          := tsLeft ;
 tvLeft.OnClick         := tvOnClick ;
 Node                   := tvLeft.Items.AddChildObject(nil, 'test', ObjClass);
 Mytree                 := tvLeft  ;
 inc(i);
end;
 
procedure TForm1.tvOnClick(Sender : TObject);
var
 ObjResume : TMaClass ;
begin
 ObjResume  := Mytree.selected.Data;
 Edit2.Text := ObjResume.sInfo;
end ;
Le probleme avec ce code est que si je cree un seul onglet, il n'y a aucun probleme: je récupère la valeur que j'ai mise dans le noeud.
Si j'en crée un deuxième, j'ai la valeur du noeud de cet onglet par contre je perd la valeur du noeud du premier.

Quelqu'un a t-il une suggestion ?
merci