TTreeView/hu

From Lazarus wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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:

  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;