如题,主要是在权限设置用的树状如下。基本资料(a)
  员工资料(b)
  客户资料(c)
  商家资料(d)
在此树中,主要是通过节点的imageindex来决定是否拥有此权限,imageindex=1为是,为2则否,
在程序中,是通过双击节点来改变imageindex的值的。
在此我想要的效果是当a点为2时,那么bcd要为2,另一种情况是,当bcd中任何一个为1时,那a必须为1.现在的问题是小弟对此控件不清楚,具体要如何实现呢?

解决方案 »

  1.   

    明白你的意思
    相应双击事件为节点的imageIndex赋值就是了
    先用TreeView1.select取到被选中的节点
    如果是将此节点赋1,那么就用item.getparent查找它的父节点,将父节点的也赋1
    如果是将此节点副2,那么就用item.getfirstchild查找它的自节点,然后循环将所有自节点副2
    这样就应该可以了。
      

  2.   

    现在我不懂的就是如何通过getfirstchild来找出a下面的b、c、d这三个子节点啊。
      

  3.   

    现在我不懂的就是如何通过getfirstchild来找出基本资料(a)下面的三个子节点啊,而且前提是不知道,他下面有多少个子节点。
      

  4.   

    procedure TForm1.tv1DblClick(Sender: TObject);
    var
      i: Integer;
    begin
      if tv1.Selected = nil then Exit;
      tv1.Selected.ImageIndex := (tv1.Selected.ImageIndex + 1) mod 2;
      tv1.Selected.SelectedIndex := tv1.Selected.ImageIndex;
      if (tv1.Selected.ImageIndex = 0) and (tv1.Selected.Parent <> nil) then
      begin
        tv1.Selected.Parent.ImageIndex := 0;
        tv1.Selected.Parent.SelectedIndex := 0;
      end;
      if (tv1.Selected.ImageIndex = 1) and (tv1.Selected.HasChildren) then
      begin
        for i := 0 to tv1.Selected.Count - 1 do
        begin
          tv1.Selected.Item[i].ImageIndex := 1;
          tv1.Selected.Item[i].SelectedIndex := 1;
        end;
      end;
      tv1.Repaint;
      tv1.FullExpand;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      tv1.FullExpand;
    end;
      

  5.   

    简单说明一下
    1。这个程序里有一个treeview和一个imglist控件。
    其中就两个图标0和1,分别为勾和叉:0为叉,1为勾。
    同时,是与否,也是用0和1表示的,不是用1和2来表示的。
    2。至于你说的两个功能均以实现。
    3。帖子时间很长了,在这么长时间内,你自己应该能够在相关资料上找到答案的!
      

  6.   

    在change事件中写代码来实现就可以了。