TreeNode1.ImageIndex := i;  //i is the index of the image in you ImageList;

解决方案 »

  1.   

    谢谢,这个我知道,问题是如何根据某个条件动态得知其节点(例如根据标题)Node?
      

  2.   

    这样看你怎么想了。
    首先:如果你只是要你所选择的node变成另外的图标, selected.imageIndex:=i;
    如果你想在第2层全是,循环 for ... begin if TreeNode.level=i then  
      TreeNode.imageIndex:=i
     end;
    得到该节点的handle,其实在你add节点的时候就已经返回了
      

  3.   

    每个tree item有个data属性,可以保存一个图片的指针。
    在CustomDraw中自己画。
      

  4.   

    每个tree item有个data属性,可以保存一个图片的指针。
    在CustomDraw中自己画。
      

  5.   

    返回:
    YTreeNode:=TreeView.items.addchild(nil,'hehe');
      

  6.   

    首先一点,这些节点不是你自己加的吗??
    如果是:加的时候,使用相应的图标索引!       if Name="驱动器" then imageindex=xxxx
           else
                   .....如果不是,这些节点怎么来得??说详细!
      

  7.   

    to aywater:当然是自己加的,不过不是手工加的,通过程序自动加的,比如,我通过程序判断当前桌面上所有的窗口并将其显示在Treeview里(其标题既窗口标题),我想根据这些窗口标题改变其对应的图标。
    经过就是这样的,谢谢您!!
      

  8.   

    我知道了,你这个问题,最后演变成怎么获取指定文件类型的文件信息(包括图标资源)!
    使用API!具体看帮助!MSDN或者CB 的Win32 api说明!
        SHGetFileInfo(p, 0, SHFI, SizeOf(SHFI), $400 or $200 or $100 or 4 or 1);
          IconHandle:=SHFI.hIcon;
          if IconHandle<>0 then
          begin
            hn := Hash.GetIndex(SHFI.szTypeName);
            if (hn = -1) or (strcomp(SHFI.szTypeName,'Application')=0) or (strcomp(SHFI.szTypeName,'Icon')=0) then
            begin
              Icon:=TIcon.Create;
              Icon.Handle:=IconHandle;
              TSI.ImageIndex:=Images.AddIcon(Icon);
              Icon.Free;
              Hash.AddItem(SHFI.szTypeName, pointer (TSI.ImageIndex));
            end else TSI.ImageIndex:=integer(Hash.GetByIndex(hn));
            TSI.StateImageIndex:=TSI.ImageIndex;
          end;