Bonjour,
J'utilise pour la première fois un TTreeView pour dérouler un logigramme. Je le génère pour l'instant à partir de Logigramme = array[0..4] of MonRecord, fixé dans le code de FormCreate (je m'entraine !). Je n'arrive pas à récupérer l'objet associé à chaque noeud (que j'ai appeler ObjLogigramme).
Définition de type :
Procédure pour charger le TreeView à partir de Logigramme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 type TObjLogigramme = class(TObject) // un objet de 3 string ! c'est pour essayer !! Title : String; Short : String; Display : String; end;
Et pour récupérer les données à partir d'un click dans le TreeView :
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 for i := 0 to high(Logigramme) do begin ObjLogigramme.Title := Logigramme[i].Title; ObjLogigramme.Short := Logigramme[i].Short; ObjLogigramme.Display := Logigramme[i].Display; if Logigramme[i].Parent = -1 then // première racine begin ndNoeud := TVwLogigramme.Items.AddNode(nil, nil, Logigramme[i].Text, ObjLogigramme, naAddFirst); ndNoeud.ImageIndex := Logigramme[i].Image; ndNoeud.SelectedIndex := Logigramme[i].SelectedImage; end else // pour tous les autres = qui sont toujours les enfants de quelqu'un ! begin NoeudParent := TVwLogigramme.Items.Item[Logigramme[i].Parent]; ndNoeud := TVwLogigramme.Items.AddNode(nil, NoeudParent, Logigramme[i].Text, ObjLogigramme, naAddChild); ndNoeud.ImageIndex := Logigramme[i].Image; ndNoeud.SelectedIndex := Logigramme[i].SelectedImage; ndNoeud.MakeVisible; end; end;
Qu'est-ce qui ne tourne pas rond dans ce code de récupération d'un objet ?
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 procedure TForm1.TVwLogigrammeClick(Sender: TObject); var ndNoeud : TTreeNode; Souris : TPoint; begin Souris.X := Mouse.CursorPos.X - TVwLogigramme.Left - Form1.ClientOrigin.X; Souris.Y := Mouse.CursorPos.Y - TVwLogigramme.Top - Form1.ClientOrigin.y; ndNoeud := TVwLogigramme.GetNodeAt(Souris.X, Souris.Y); if NOT (ndNoeud <> nil) then exit; ObjLogigramme := TVwLogigramme.Selected.Data; // essai de visualisation des données : MonRichEdit.Clear; MonRichEdit.Lines.Add(ndNoeud.Text); // affiche le bon texte ! MonRichEdit.Lines.Add(ObjLogigramme.Display); // à partir de là : MonRichEdit.Lines.Add(ObjLogigramme.Short); // n'affiche que le dernier ObjLogigramme créé !! MonRichEdit.Text := ObjLogigramme.Title; // Help !! end;
de votre aide !
Partager