Kod:
type
PLinkData = ^TLinkData;
TlinkData = packed record
Id : Integer
Kategori : WideString;
end;
........................
procedure TForm1.AgacGorunumu;
Var
Q : TQuery;
myNode : TTreeNode;
DataLink : PLinkData;
begin
try
TreeView1.Clear;
Initialize(DataLink^);
Q := TQuery.Create(Self);
Q.DatabaseName := 'myDB';
//Sorguyu kategori düzenine göre ayarlarsın
Q.SQL.Add('Select * from tablom order by id') ;
Q.Open;
myNode := Nil // Veya root
While Not Q.EOF do
begin
New(DataLink); // İşaretçi için yer ayır
DataLink.ID := Q.FieldByName('id').AsInteger;
DataLink.Kategori := Q.FieldByName('kategori').Asstring;
myNode := TreeView1.Items.AddChild(myNode,Q.FieldByName('kategori').Asstring);
myNode.Data := DataLink; //işaretçiyi düğüme ata
Q.Next;
end;
finally
Q.Close;
Q.Free;
end;
end;
procedure TForm1.TreeView1.ItemClick(......);
Var
DataLink : PLinkData;
ID : Integer;
begin
DataLink := (Item.Data);
if Assigned(DataLink) then
begin
ID := DataLink.ID;
.......................
end;
end;
//Uygulamayı sonlandırırken bellekte ayrılan yeri boşaltmayı unutma
procedure TForm1.OnCloseQuery(....);
Var
DataLink : PLinkData;
i : Integer;
myNode : TTreeNode;
begin
for i:=0 to TreeView1.items.count-1 do
begin
myNode := Treeview1.Items[i];
if myNode <> Nil then
begin
DataLink := myNode.Data;
if Assigned(DataLink) then
begin
Finalize(DataLink^);
FreeMem(DataLink);//belleği boşalt....
end;
end;
end;
end;