Работа с деревом TreeView (TTreeView)
Создание элемента
function TfmMain.Push(AParent: TTreeNode; ACaption: string; AData: TMom; Icon: Integer): TTreeNode;
begin
Result := tvwMain.Items.AddChild(AParent, ACaption);
Result.ImageIndex := Icon;
Result.SelectedIndex := Icon;
Result.Data := AData;
end;
Загрузка иконок
function TfmMain.Icon(AFileName: string): Integer;
var bmImage: TBitmap;
begin
Result := -1;
bmImage := TBitmap.Create;
try
bmImage.LoadFromFile(AFileName);
if (bmImage.Width <> imlIcons.Width) or (bmImage.Height <> imlIcons.Height) then
raise Exception.Create('wrong size');
Result := imlIcons.Add(bmImage, nil);
finally
FreeAndNil(bmImage);
end;
end;
Чистка дерева и всех объектов
procedure TfmMain.FormDestroy(Sender: TObject);
procedure DeletePtr(RootNode: TTreeNode);
begin
while RootNode.HasChildren do begin
DeletePtr(RootNode.Item[0]);
end;
if RootNode.Data <> nil then begin
TMom(RootNode.Data).Free;
RootNode.Data := nil;
end;
tvwMain.Items.Delete(RootNode);
end;
begin
tvwMain.Items.BeginUpdate;
try
while tvwMain.Items.Count > 0 do begin
DeletePtr(tvwMain.TopItem);
end;
finally
tvwMain.Items.EndUpdate;
end;
end;