====== Работа с деревом 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;