有个动态生成的TREEVIEW,怎么样做到象资源管理器那样
文件夹小图标有时是打开的形式,有时是关闭的形式

解决方案 »

  1.   

    先把TreeView与ImageList联系上,然后加入两个图标procedure TForm1.TreeView1Expanded(Sender: TObject; Node: TTreeNode);
    begin
      Node.ImageIndex:=0;
      Node.SelectedIndex:=0;
      Node.StateIndex:=0;
    end;procedure TForm1.TreeView1Collapsed(Sender: TObject; Node: TTreeNode);
    begin
      Node.ImageIndex:=1;
      Node.SelectedIndex:=1;
      Node.StateIndex:=1;
    end;
      

  2.   

    procedure TForm1.TreeView1GetImageIndex(Sender: TObject; Node: TTreeNode);
    begin
    if Node.HasChildren then
    if Node.Expanded then
    node.ImageIndex:=1
    else
    Node.ImageIndex:=0
    else
    node.ImageIndex:=2;
    end;不用注释吧!
      

  3.   

    这个可以做一个ImageList
    在里面添加图标TreeView.ImageList:=ImageList;
    打开
    TreeView.Item[i].ImageIndex:=0;
    关闭
    TreeView.Item[i].ImageIndex:=1;
      

  4.   

    Treeview中几个与图象相关的属性:
    SelectedIndex:当节点被选中时在TimageList 中选什么样的图象
    OverlayIndex:选那副图象作为掩图(一幅图象透明地显示在另一幅图象的前面),比如一个节点不可用时加一副X图象在其前面。
    ImageIndex:在常态时选用的图的序号
    StateIndex: 在StateImages这个ImageList中对应的序号,-1时不显示图象
    比较典型的,象在文件管理器中的所显示的一样,Treeview控件在节点之前也可以显示图象。在Form中放置一ImageList控件,加入几个图片,分别被Index为0 1
    …在Treeview的Image属性项填入你所加入的ImageList的控件名称。TreeNode的ImageIndex表示节点未被选中时(Selected=nil)的图片序号,SelectedIndex表示节点被选中时图片序号。
      

  5.   

    StateIndex: 在StateImages这个ImageList中对应的序号,-1时不显示图象
    这个可以解释清楚些吗?
      

  6.   

    在GETIMAGEINDEX事件中
    if node.Selected then
        node.SelectedIndex:=1
      else
        node.SelectedIndex:=0;第一次会有效果
    但是以后都是一种图象
    这是为什么
      

  7.   

    StateIndex: 在StateImages这个ImageList中对应的序号,-1时不显示图象
    你在窗体上加一个imagelist然后向里面加图像,图像的序号是从0开始的
    如果不向让他有图片 负值-1