Is er misschien een klein voorbeeld voor TNode.Data te vinden?
Had al iets verzonden met gewone pointers maar of dat zo elegant is.
Code:
type
PItemRecord = ^TItemRecord;
TItemRecord = record
FullPath: Widestring;
end;
procedure TfrmCustomQuickSelect.GetDirectories(Tree: TTreeView; Directory: string; Item: TTreeNode; IncludeFiles: Boolean);
var
SearchRec: TSearchRec;
ItemTemp: TTreeNode;
begin
if Directory[Length(Directory)] <> '\' then
Directory := Directory + '\';
if FindFirst(Directory + '*.*', faDirectory, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then
begin
if (SearchRec.Attr and faDirectory > 0) then
begin
Item := Tree.Items.AddChild(Item, SearchRec.Name);
New(pData);
pData^.FullPath := (Directory + SearchRec.Name);
Item.Data := pData; // PChar(Directory + SearchRec.Name);
end;
ItemTemp := Item.Parent;
GetDirectories(Tree, Directory + SearchRec.Name, Item, IncludeFiles);
Item := ItemTemp;
end
else if IncludeFiles then
if SearchRec.Name[1] <> '.' then
Tree.Items.AddChild(Item, SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
Caption := PItemRecord(Node.Data)^.FullPath;
// Geloof deze dan ook nodig is...
procedure TfrmCustomQuickSelect.TreeDirectoryListDeletion(Sender: TObject; Node: TTreeNode);
begin
Dispose(PItemRecord(Node.Data));
end;
Bookmarks