Bonjour,
J'ai une fonction qui charge un fichier text avec une arborescence (tree) tab délimiter dans un composent TTreeView,
sous Firemonkey j'utilise TTreeViewItem.
Le fichier text que je charge à ce format.
Example;
Pendant la conversion des lignes, les textes à partir de child_ABC ne viennent pas à la bonne position.
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 RootA_0 child_A child_AA child_AB child_ABA child_ABB child_ABBA child_ABBB child_ABBC child_ABBD child_ABC child_B child_BA child_C child_CA child_D RootB_0
Ici je n'arrive pas à faire le bon retour.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 ... ... child_ABBA child_ABBB child_ABBC child_ABBD child_ABC child_B child_BA child_C ....
Mon probleme est que j'arrive à ajouter des nodes dans l'arborescence enfant,
mais je n'arrive pas a ajouté un node dans arborescence qui devient plus haute (parent).
Voici la fonction que je utilise;
Je vous remercie pour l'aide que vous m'apportez.
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 procedure TForm1.LoadTextFileTree(TreeView: TTreeView; FileName: string); var List: TStringList; I, TabCount, CurrentLevel: Integer; ParentNode, Node: TTreeViewItem; ParentObject: TFMXObject; begin List := TStringList.Create; try List.LoadFromFile(FileName); ParentNode := nil; CurrentLevel := 0; for I := 0 to List.count - 1 do begin TabCount := CountChar(List[I], #9); Node := TTreeViewItem.Create(TreeView); Node.Text := List[I].Replace(#9, ''); Node.Tag := TabCount; if (TabCount = 0) or (ParentNode = nil) then TreeView.AddObject(Node) else if TabCount = CurrentLevel then ParentNode.Parent.AddObject(Node) else if TabCount > CurrentLevel then ParentNode.AddObject(Node) else if TabCount < CurrentLevel then begin while (TabCount <= CurrentLevel) and (ParentNode.Tag >= TabCount) do begin // l'erreur d'affichage dois ce passer ici ParentObject := ParentNode.Parent; ParentNode.Parent := ParentObject; dec(CurrentLevel); end; ParentNode.AddObject(Node) end; ParentNode := Node; CurrentLevel := TabCount; end; finally List.Free; end; end;
Partager