Содержание

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