Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi t查看项目取消选择_Delphi_Treeview_Firemonkey_Treeviewitem - Fatal编程技术网

Delphi t查看项目取消选择

Delphi t查看项目取消选择,delphi,treeview,firemonkey,treeviewitem,Delphi,Treeview,Firemonkey,Treeviewitem,我是Delphi(和Firemonkey)的新手,我可以通过再次单击TTreeViewItem(如果已经选中)来取消选择TTreeViewItem。我看到的唯一问题是,我只知道如何为已经在开发人员窗口中创建的项目创建事件,而不是用户稍后创建的项目 我知道可以稍微清理一下,但这里是我创建TTreeViewItems的地方。在TreeView W1中单击“使用ClearingEdit2中的文本创建节点项”时,我有按钮1,如果未选择任何节点/子节点,则会创建一个新的根节点,否则会将其创建为父选定节点的

我是Delphi(和Firemonkey)的新手,我可以通过再次单击TTreeViewItem(如果已经选中)来取消选择TTreeViewItem。我看到的唯一问题是,我只知道如何为已经在开发人员窗口中创建的项目创建事件,而不是用户稍后创建的项目

我知道可以稍微清理一下,但这里是我创建TTreeViewItems的地方。在TreeView W1中单击“使用ClearingEdit2中的文本创建节点项”时,我有按钮1,如果未选择任何节点/子节点,则会创建一个新的根节点,否则会将其创建为父选定节点的子节点:

    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;

到目前为止,由于它的结构方式,我可以让它取消选择已经制作的项目,但一般来说不是树项目,这是我需要的。我只是不知道如何使用它来动态地工作,而不管它的名字是什么,但我只是使用了TreeView中的所有TreeView项。

不管怎样,我已经找到了答案

要修复它,首先我使用:

   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;
最后,对于我使用的点击事件:

    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;