Difference between revisions of "TTreeView/hu"

From Free Pascal wiki
Jump to navigationJump to search
(Created page with "{{TTreeView}} ==Új elem hozzáadása a kódban== Használd a TTreeView.Items.AddChild vagy a AddChildObject eljárásokat! <!--==Creating a TreeView which loads items onl...")
 
m (Fixed syntax highlighting; deleted category included in page template)
 
(One intermediate revision by one other user not shown)
Line 10: Line 10:
 
To add the expansion symbol to a node without subitems use:
 
To add the expansion symbol to a node without subitems use:
  
<syntaxhighlight>MyNode.HasChildren := True;</syntaxhighlight>
+
<syntaxhighlight lang=pascal>MyNode.HasChildren := True;</syntaxhighlight>
  
 
Ezután állíts be egy eseménykezelőt az OnExpanding . In this even you should return if the expansion can actually be made or not and when yes, you should add subitems to the node. If the expansion cannot be done, the expansion symbol will be automatically removed even if you have previously set HasChildren to true.
 
Ezután állíts be egy eseménykezelőt az OnExpanding . In this even you should return if the expansion can actually be made or not and when yes, you should add subitems to the node. If the expansion cannot be done, the expansion symbol will be automatically removed even if you have previously set HasChildren to true.
Line 25: Line 25:
 
Kód:
 
Kód:
  
<syntaxhighlight>procedure TForm1.Button1Click(Sender: TObject);
+
<syntaxhighlight lang=pascal>procedure TForm1.Button1Click(Sender: TObject);
 
var  
 
var  
 
   i: integer;
 
   i: integer;
Line 72: Line 72:
 
Használd a TreeView OnDeletion eseménykezelőjét az objektum(ok) felszabadítására.
 
Használd a TreeView OnDeletion eseménykezelőjét az objektum(ok) felszabadítására.
  
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
 
procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
 
begin
 
begin
Line 84: Line 84:
 
# Állítsd a treeview "Drag Mode" tulajdonságát DmAutomatic-ra!
 
# Állítsd a treeview "Drag Mode" tulajdonságát DmAutomatic-ra!
 
# Hozz létre eseménykezelőt az "OndragOver" eseményhez:  
 
# Hozz létre eseménykezelőt az "OndragOver" eseményhez:  
<syntaxhighlight>procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;  State: TDragState; var Accept: Boolean);
+
<syntaxhighlight lang=pascal>procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;  State: TDragState; var Accept: Boolean);
 
begin
 
begin
 
   Accept := true;
 
   Accept := true;
 
end;           
 
end;           
 
</syntaxhighlight>
 
</syntaxhighlight>
 
 
<!--{{LCL Components Footer|TProgressBar|TListView}}
 
{{LCL Components}}
 
 
-->
 
[[Category:LCL]]
 
[[Category:Components]]
 

Latest revision as of 02:58, 2 March 2020

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;