Reputation: 71
I am new to Delphi (and Firemonkey) and I have it to where I can deselect a TTreeViewItem by clicking on it again if it is already selected. The only problem I'm seeing with it, is that I only know how to create events for items that are already created in the developer window and aren't created later by the user.
I know it can be cleaned up a bit but here's where I create the TTreeViewItems. I have Button1 when clicked create a node item with the text from ClearingEdit2 in TreeView1 and if no nodes/children are selected it creates a new root node, otherwise it creates it as a child of the parent selected node:
procedure TForm3.Button1Click(Sender: TObject);
var
Item1 : TTreeViewItem;
begin
if NodeSelected = 'DeSelected' then
begin
Item1 := TTreeViewItem.Create(Self);
Item1.Text := ClearingEdit2.Text;
Item1.Parent := TreeView1;
end
else
if NodeSelected = 'Selected' then
begin
Item1 := TTreeViewItem.Create(Self);
Item1.Text := ClearingEdit2.Text;
Item1.Parent := TreeView1.Selected;
TreeView1.Selected.Deselect;
TreeView1.Selected.Expand;
NodeSelected := 'DeSelected';
ClearingEdit2.SetFocus;
ClearingEdit2.SelectAll;
end;
end;
Later on in the program I'm using this for the event:
procedure TForm3.TreeViewItem1Click(Sender: TObject);
begin
if ((NodeSelected = 'Selected')= false) then
begin
NodeSelected := 'Selected';
Label1.Text := 'Selected';
end
else
if (NodeSelected = 'Selected') then
begin
TreeView1.Selected.Deselect;
NodeSelected := 'DeSelected';
ClearingEdit2.SetFocus;
end
else
end;
So far, because of the way it's structured, I can get it to deselect the already made item, but not TreeViewItems in general which is what I need. I just don't know how I should be phrasing it to work dynamically regardless of the name, but just using all TreeViewItems from TreeView1.
Upvotes: 0
Views: 477
Reputation: 71
Nevermind, I figured it out.
To fix it, first I used:
type
TForm3 = class(TForm)
procedure Button1Click(Sender: TObject);
procedure Item1Click(Sender: TObject);
then I used:
procedure TForm3.Button1Click(Sender: TObject);
var
Item1 : TTreeViewItem;
begin
if NodeSelected = 'DeSelected' then
begin
Item1 := TTreeViewItem.Create(Self);
Item1.Text := ClearingEdit2.Text;
Item1.Parent := TreeView1;
Item1.OnClick := Item1Click;
end
else
if NodeSelected = 'Selected' then
begin
Item1 := TTreeViewItem.Create(Self);
Item1.Text := ClearingEdit2.Text;
Item1.Parent := TreeView1.Selected;
Item1.OnClick := Item1Click;
TreeView1.Selected.Deselect;
TreeView1.Selected.Expand;
NodeSelected := 'DeSelected';
ClearingEdit2.SetFocus;
ClearingEdit2.SelectAll;
end;
end;
and lastly for the Click event I used:
procedure TForm3.Item1Click(Sender: TObject);
begin
if ((NodeSelected = 'Selected')= false) then
begin
NodeSelected := 'Selected';
end
else
if (NodeSelected = 'Selected') then
begin
TreeView1.Selected.Deselect;
NodeSelected := 'DeSelected';
ClearingEdit2.SetFocus;
end
else
end;
Upvotes: 1