Peter Kiers
asked on
Treeview question
Dear experts,
I have received a code from an expert and it works just fine.
But with this code your not able to create a folder in a folder.
What do I have to change:
Peter Kiers
I have received a code from an expert and it works just fine.
But with this code your not able to create a folder in a folder.
What do I have to change:
Peter Kiers
(*----------------------------------------*)
procedure TMainForm.NewFolder1Click(Sender: TObject);
var aText: string;
begin
if InputQuery('New Folder', 'New Folder Name:', aText) then
AddItem(aText, 0, nil);
end;
(*----------------------------------------*)
procedure TMainForm.NewItem1Click(Sender: TObject);
var aText: string;
begin
if (TreeView1.Selected <> nil) and (Treeview1.Selected.ImageIndex = 0) then
begin
if InputQuery('New Item', 'New Item Name:', aText) then
AddItem(aText, 1, TreeView1.Selected);
end else
ShowMessage('Select a folder in the treeview first.');
end;
(*----------------------------------------*)
procedure TMainForm.AddItem(aText: string; aIndex: Integer; aParent: TTreeNode);
var item: TTreeNode;
begin
item := TTreeNode.Create(TreeView1.Items);
item.Text := aText;
item.ImageIndex := aIndex;
item.SelectedIndex := aIndex;
TreeView1.Items.AddNode(item, aParent, aText, nil, naAddChild);
end;
ASKER
Code doesn't work, and a don't want the qeustion to be ask
so no messagedlg.
Gtrx, PK
so no messagedlg.
Gtrx, PK
sorry, didn't test in Delphi, just typed it in firefoxy
procedure TForm1.AddItem(aText: string; aIndex: Integer; aParent: TTreeNode);
var item: TTreeNode;
begin
item := TTreeNode.Create(TreeView1.Items);
item.Text := aText;
item.ImageIndex := aIndex;
item.SelectedIndex := aIndex;
TreeView1.Items.AddNode(item, aParent, aText, nil, naAddChild);
end;
procedure TForm1.btnAddFileClick(Sender: TObject);
begin
if (TreeView1.Selected <> nil) and (TreeView1.Selected.ImageIndex = 0) then
begin
AddItem(Edit1.Text, 1, TreeView1.Selected);
end else
ShowMessage('First select a folder');
end;
procedure TForm1.btnAddFolderClick(Sender: TObject);
var aText: string;
begin
if InputQuery('Folder', 'Enter a folder name', aText) then
AddItem(aText, 0, nil);
end;
procedure TForm1.btnAddSubFolderClick(Sender: TObject);
var aText: string;
begin
if (TreeView1.Selected <> nil) and (TreeView1.Selected.ImageIndex = 0) then
begin
if InputQuery('New Sub Folder', 'New Sub Folder Name:', aText) then
AddItem(aText, 0, TreeView1.Selected);
end else
ShowMessage('You must select a folder first !');
end;
ASKER
You made for adding a subfolder in a folder a new button
But I want to use the same add folder button
and I know its possible.
I have send an example.
Greetings, Peter Kiers
Naamloos.jpg
But I want to use the same add folder button
and I know its possible.
I have send an example.
Greetings, Peter Kiers
Naamloos.jpg
okay, both of them into 1 with no messagedlg (check is on selected folder)
procedure TForm1.btnAddFolderClick(Sender: TObject);
var aText: string;
aParent: TTreeNode;
begin
aParent := nil;
if TreeView1.Selected <> nil then
begin
if TreeView1.Selected.ImageIndex = 0 then // check for folder
aParent := TreeView1.Selected
//else
//begin
// ShowMessage('Select a folder first');
// Exit;
//end;
// uncomment previous 5 lines if a file is selected and you only want this to add on selected folders
end;
if InputQuery('Folder', 'Enter a folder name', aText) then
AddItem(aText, 0, aParent);
end;
ASKER
Much better, only the new created subfolder will not automaticly collapse
you have to press the + sign to see the created subfolder.
you have to press the + sign to see the created subfolder.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Your the best, 500 comming your way.
PK.
PK.
var aText: string;
aParent: TTreeNode;
begin
if InputQuery('New Folder', 'New Folder Name:', aText) then
begin
aParent := nil;
if TreeView1.Selected <> nil then
case MessageDlg('Do you want to create the folder below the currently selected one (no = create at toplevel, yes = create below selected)', mtConfirmation, [mbOk, mbNo, mbCancel], 0) of
mrYes: aParent := TreeView1.Selected;
mrNo: ; // aParent := nil;
mrCancel: Exit;
end;
AddItem(aText, 0, aParent);
end;
end;