用imagelist设置图标,然后在treeview中使用相应的属性配置图标切换就可以了

解决方案 »

  1.   

    stateimage属性再配置一个imagelist 就可以了
      

  2.   

    在OnChange
    TreeView1.Selected.imageindex :=1;
      

  3.   

    在onchange里
    imageindex:=1
    stateindex:=1也要加上
      

  4.   

    如果不要两个图标,设Images就可以了,不要设StateImages
    如果要求点击时图标改变,设置SelectedIndex,比如SelectedIndex:=0;
    如果要求点击时不改变图标那么SelectedIndex:=ImageIndex;
      

  5.   

    ————————————我帮您总结一下以上几位高手的答案————————————1)窗体中加两个imagelist如imagelist1,imagelist2,并为其加入各显示状态下的图标(也可程序加载)。2)将TreeVIew的images属性设成imagelist1;stateimages属性设为imagelist2;3)在动态创建TreeNode时就设定各图标(而不必在OnClick事件中去干这种勾当)。  with Tvw.items.add('指定节点名','新建节点名') do 
      begin
        imageindex:=0;//常态下的图标索引——这里调用imagelist1中的图标
        selectedIndex:=1;//选取状态下的图标索引——这里调用imagelist1中的图标
        stateIndex:=0;//这里调用imagelist2中的图标
      end;————————————————————————————————————
      

  6.   

    我去试试,不过综合以上意见,我觉得只有newmanJB(布衣侠客)的第3)条意见能派上用
    场。
      

  7.   

    for i := 0 to treeview1.items.count - 1 do
      treeview1.items[i].imageindex := 0;  //全部设置成ImageList1中的图标0
    for i := 0 to treeview1.items.count - 1 do
      treeview1.items.selectedIndex := 1;//设置选取状态为ImageList1中的图标1
      

  8.   

    ——
    mengbo(心有独钟)的方法好啊,这样集中一处管理方便快捷,易于维护。
    ————
      

  9.   

    procedure Tform1.TreeView1GetImageIndex(Sender: TObject;
      Node: TTreeNode);
    begin
      with Node do
      if HasChildren then
        if Expanded then
          ImageIndex:=17
        else
          ImageIndex:=16
      else
        ImageIndex:=19;
      //Node.ImageIndex:=14;
    end;procedure Tform1.TreeView1GetSelectedIndex(Sender: TObject;
      Node: TTreeNode);
    begin
      with Node do
      if HasChildren then
        SelectedIndex:=ImageIndex
      else
        SelectedIndex:=18;
    end;