Bonjour à tous,
Mince, j'ai posté ma demande initiale dans Accueil / Index du forum / Environnements de développement / Delphi, je la reposte sous ... / Delphi / Composants VCL
Je débute avec les TrieView et je patauge ...
J'ai une application qui comporte un TrieView avec des nodes parent et enfants.
Je souhaiterai faire une recherche dans le TrieView et mettre dans une couleur différente les nodes qui contiennent le texte recherché.
Facile avec tous les composants ... mais avec les TrieView ...
Pour la recherche j'ai trouvé le code suivant qui recherche bien la chaine de caractère mais il ne va pas plus loin
blablabla ... déclaration ....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Type TFindTree_Sens=(Up,Down); // sens de la recherche (vers le début ou la fin de l'arborescence)
note : FindTree_Depart = départ de l'arborescence : 0=début ou ailleurs dans la liste. est déclaré en variable globale
Et j'appelle le code avec
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 function TForm2.FindTreeText(Depart:Integer; FindTree_Sens:TFindTree_Sens; AText: string): TTreeNode; var iLoop: integer; S,S1:String; begin result := nil; if not Assigned(TreeView1) then exit; if TreeView1.Items.Count > 0 then begin if FindTree_Sens=Down // vers la fin then begin for iLoop := Depart to Pred(TreeView1.items.Count) do begin S:=Trim(TreeView1.Items[iLoop].Text); if AnsiContainsText(S,Edit2.Text)=true then begin Result := TreeView1.Items[iLoop]; FindTree_Depart:=iLoop; Break; end; end; end else begin for iLoop := Depart downTo 0 do // vers le début begin S:=Trim(TreeView1.Items[iLoop].Text); if AnsiContainsText(S,Edit2.Text)=true then begin FindTree_Depart:=iLoop; TreeSearch:=true; TreeSearch:=false; Result := TreeView1.Items[iLoop]; Break; end; end; end; end; end;
Merci à tous de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TForm2.Image1Click(Sender: TObject); begin Node := FindTreeText(0,Down,Edit2.Text); if Node <> nil then TreeView1.Selected := Node // Ca ne sélectionne rien du tout else ShowMessage('Non trouvé'); end;
Partager