În timp ce dezvoltați aplicații Delphi folosind componenta TreeView, este posibil să vă confruntați cu o situație în care trebuie să căutați un nod arbore dat doar de textul nodului.
În acest articol vă vom prezenta o singură funcție rapidă și ușoară pentru a obține nodul TreeView după text.
În primul rând, vom construi un formular Delphi simplu care conține un TreeView, un buton, CheckBox și o componentă Edit - lăsați toate numele implicite ale componentelor.
După cum v-ați putea imagina, codul va funcționa ceva de genul: dacă GetNodeByText dat de Edit1.Text returnează un nod și MakeVisible (CheckBox1) este adevărat, atunci selectați nodul.
Partea cea mai importantă este funcția GetNodeByText.
Această funcție se iterează pur și simplu prin toate nodurile din arborele ATree TreeView începând de la primul nod (ATree.Items [0]). Iterația utilizează metoda GetNext din clasa TTreeView pentru a căuta următorul nod din ATree (arată în toate nodurile tuturor nodurilor copil). Dacă Nodul cu text (etichetă) dat de AValue este găsit (sensibil la litere mari), funcția returnează nodul. Variabila booleană AVISible este utilizată pentru a face vizibil nodul (dacă este ascuns).
funcţie GetNodeByText
(ATree: TTreeView; AVALUARE:Şir;
AVISIBIL: Boolean): TTreeNode;
var
Nod: TTreeNode;
începe
Rezultat: = zero;
dacă ATree.Items.Count = 0 apoi Ieșire;
Nod: = ATree.Items [0];
in timp ce Nodul zero dobeginif UpperCase (Node.Text) = UpperCase (AValue) thenbegin
Rezultat: = nod;
dacă AVisible apoi
Result.MakeVisible;
Pauză;
Sfârșit;
Nod: = Nod.GetNext;
Sfârșit;
Sfârșit;
Acesta este codul care rulează butonul „Găsiți nodul” eveniment OnClick:
procedură TForm1.Button1Click (Expeditor: TObject);
var
tn: TTreeNode;
începe
tn: = GetNodeByText (TreeView1, Edit1.Text, CheckBox1.Checked);
dacă tn = zero apoi
ShowMessage („Nu a fost găsit!”)
elsebegin
TreeView1.SetFocus;
tn.Selected: = True;
Sfârșit;
Sfârșit;
Notă: Dacă nodul este localizat, codul selectează nodul, dacă nu este afișat un mesaj.
Asta e. La fel de simplu poate fi doar Delphi. Cu toate acestea, dacă arăți de două ori, vei vedea că lipsește ceva: codul va găsi PRIMUL nod dat de AText.