TreeView,有二级节点。我如何才能只让二级节点能选择,一级节点不让选择?

解决方案 »

  1.   

    不能选择嘛,还没有简单的方案;给楼主一个思路,当用户点击一级节点时,自动选择该一级节点的第一个二级子节点,这样也可间接达到, 用户不能选择一级节点的要求;procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
    begin
      if (node.Level = 0) then //一级节点
        node.Item[0].Selected := true
      else
      begin //二级节点
        Edit1.Text := Node.Text;
      end;
    end;
      

  2.   

    procedure TForm1.TreeView1Changing(Sender: TObject; Node: TTreeNode;
      var AllowChange: Boolean);
    begin
        AllowChange := Node.Level <> 0;
    end;
      

  3.   

    如果只允许二级节点能选择,一级和三级节点都不能选择的话,改成
    AllowChange := Node.Level = 1;
      

  4.   

    老妖的方法可行~~~只是有一点,用户单击一级节点时,会感觉TreeView没有反应,
    必须点击左边的+ 号或者双击才能展开二级节点,且展开之后并没有自动选择二级节点;如果在树没有自动展开的情况下,如果不需要自动选择二级节点,可以采用老妖的方法.如果需要自动选择二级节点,可以采用这个方法,procedure TForm1.tv1Change(Sender: TObject; Node: TTreeNode);
    begin
    if (node.Level = 0) and( Node.HasChildren) then //一级节点,加个HasChildren,以免没有子点节时出错
    begin
       node.Item[0].Selected := true
    end;
    end;
      

  5.   

    先谢谢兄弟们的关心与帮助。因为特别着急要用,客户提的,没有办法。老妖的方法可行。TreeView这样可以控制了。但实际上我用的是 dxTreeViewEdit控件。就是一个编辑框,可以下拉,下拉就是TreeView。
    可此控制无OnChanging事件。但问题解决了,我换了一个控件。用cxPopupEdit,也是一个编辑框,可以下拉,下拉框可以自己选择,我用了一个TreeView控件。谢谢兄弟了。结贴。