Sign in Join
Wiki copytemporary

TTreeView/hu

English · Español · Français · Magyar · Suomi · Русский

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

pascal
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.

pascal
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:
pascal
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;  State: TDragState; var Accept: Boolean);
begin
  Accept := true;
end;

From the Free Pascal wiki, page "TTreeView/hu", as it stood on 2020-03-02 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Edited on wiki.freepascal.org by 3 people, 2014–2020

From the official wiki's backup of 26 May 2024: who edited this page there, and when. Edits made there after that date were not recorded, and the earlier versions are not shown here; the main page says why.

WhenWhoWhat changed
GáborCreated page
FTurtle
TrevFixed syntax highlighting; deleted category included in page template (minor)

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.