type
TSelectingNodesForm = class(TForm)
Tree1: TTree;
Button1: TButton;
ButtonDelete: TButton;
LabelStatus: TLabel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Tree1SelectShape(Sender: TTreeNodeShape);
procedure Tree1UnSelectShape(Sender: TTreeNodeShape);
procedure ButtonDeleteClick(Sender: TObject);
end;
procedure TSelectingNodesForm.FormCreate(Sender: TObject);
begin
// Create sample nodes
Tree1.Add('Node 1');
Tree1.Add('Node 2');
Tree1.Add('Node 3');
// Enable multiple selection
Tree1.MultiSelect := True;
// Initially disable delete button
ButtonDelete.Enabled := False;
end;
procedure TSelectingNodesForm.Button1Click(Sender: TObject);
begin
// Select all nodes
Tree1.Selected.SelectAll;
end;
procedure TSelectingNodesForm.Tree1SelectShape(Sender: TTreeNodeShape);
begin
// Update status label
LabelStatus.Caption := 'Selected: ' + IntToStr(Tree1.Selected.Count) + ' node(s)';
// Enable delete button
ButtonDelete.Enabled := True;
end;
procedure TSelectingNodesForm.Tree1UnSelectShape(Sender: TTreeNodeShape);
begin
// Update status label
if Tree1.Selected.Count = 0 then
begin
LabelStatus.Caption := 'No nodes selected';
ButtonDelete.Enabled := False;
end
else
LabelStatus.Caption := 'Selected: ' + IntToStr(Tree1.Selected.Count) + ' node(s)';
end;
procedure TSelectingNodesForm.ButtonDeleteClick(Sender: TObject);
var
i: Integer;
begin
// Delete all selected nodes (iterate backwards to avoid index issues)
for i := Tree1.Selected.Count - 1 downto 0 do
Tree1.Selected[i].Free;
end;