TTreeViewItem取消选择

时间:2014-04-27 17:25:18

标签: delphi treeview firemonkey treeviewitem

我是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。

1 个答案:

答案 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;