TTreeView/hu

From Lazarus wiki
Jump to: navigation, search

English (en) español (es) suomi (fi) français (fr) magyar (hu)

Ú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:

  1. Állítsd a treeview "Drag Mode" tulajdonságát DmAutomatic-ra!
  2. 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;