TTreeView/hu
│
English (en) │
español (es) │
suomi (fi) │
français (fr) │
magyar (hu) │
русский (ru) │
Új elem hozzáadása a kódban
Használd a TTreeView.Items.AddChild vagy a AddChildObject eljárásokat!
Egy rövid példa a TTreeView használatára
Itt egy gyors és egyszerű példa - Windows-on a Lazarus 0.9.26 változatával teszteltem:
Hozz létre egy új alkalmazást! A Form1-hez adj egy üres TreeVeew-et (treeview1), valamint egy gombot (button1) "Gyermek hozzáadása" és egy másik gombot (button2) "Törlés" felirattal (caption)!
A gombok OnClick eseményeihez rendelt az alábbi kódot, majd fordítsd le és futtasd!
Kód:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
s: string;
begin
// ha nincsenek csomópontok/ágak létrehozza az elsőt, szülőként a Nil-t használva
if TreeView1.Items.Count = 0 then
begin
Treeview1.Items.Add (nil,'Első');
exit;
end;
// Egyszerű szöveg megadása a további csomópontoknak/ágaknak - Elem1 , Elem2 stb.
i := treeview1.Items.Count;
s := 'Elem ' + inttostr(i);
//Új csomópont hozzáadása a kiválasztott csomóponthoz
if TreeView1.Selected <> nil then
Treeview1.Items.AddChild(Treeview1.Selected ,s);
end;
procedure TForm1.Button2Click(Sender: TObject);
//Az egymásba ágyazott elemek törlése
Procedure DeleteNode(Node:TTreeNode);
begin
while Node.HasChildren do DeleteNode(node.GetLastChild);
TreeView1.Items.Delete(Node) ;
end;
begin
if TreeView1.Selected = nil then exit;
//Ha a kiválasztott elemnek vannak gyermekei, akkor jóváhagyást kér
If treeview1.Selected.HasChildren then
if messagedlg('A csomópont és összes gyermekének törlése?',mtConfirmation,
[mbYes,mbNo],0) <> mrYes then exit;
DeleteNode(TreeView1.Selected);
end;
Futtatáskor a treeview1 üres. Ha a "Gyermek hozzáadása" gombra kattintasz az első elem létre lesz hozva. Ezután mindig egy gyermek lesz létrehozva a kiválasztott elemhez amikor a "Gyermek hozzáadása" gombra kattintasz
A "Törlés" törölni fogja a kiválasztott elemet. Ha nincs gyermeke azonnal törlődik, de ha van akkor előbb rákérdez.
TreeNode adatainak felszabadítása
Használd a TreeView OnDeletion eseménykezelőjét az objektum(ok) felszabadítására.
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
begin
TMyObject(Node.Data).Free;
end;
A fogd-és-vidd módszer használata egy TreeView-ben
Ha szeretnéd használni a fogd-és-vidd módszert egy treeview-ben akkor a következőre van szükséged:
- Állítsd a treeview "Drag Mode" tulajdonságát DmAutomatic-ra!
- Hozz létre eseménykezelőt az "OndragOver" eseményhez:
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := true;
end;