我是Delphi(和Firemonkey)的新手,我可以通过再次单击它来取消选择TTreeViewItem,如果它已被选中的话。我唯一看到的问题是,我只知道如何为已经在开发者窗口中创建的项目创建事件,并且以后不会由用户创建。
我知道它可以清理一下但是我在这里创建了TTreeViewItems。我点击Button1时使用TreeView1中ClearingEdit2的文本创建一个节点项,如果没有选择节点/子节点,它会创建一个新的根节点,否则它会将其创建为父选定节点的子节点:
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;
稍后在程序中,我将此事件用于此事件:
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;
到目前为止,由于它的结构方式,我可以让它取消选择已经制作的项目,但不是TreeViewItems,这是我需要的。我不知道如何动态地使用它来动态工作而不管名称如何,只是使用TreeView1中的所有TreeViewItem。
答案 0 :(得分:1)
没关系,我想通了。
要修复它,首先我使用了:
type
TForm3 = class(TForm)
procedure Button1Click(Sender: TObject);
procedure Item1Click(Sender: TObject);
然后我用了:
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;
最后我使用的Click事件:
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;