Difference between revisions of "TTreeView/hu"
m (Fixed syntax highlighting; deleted category included in page template) |
|||
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> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
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:
- Á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;