在我的TreeView中有两个节点,
第一个结点我想用ImageList1的图标,
第二个结点我想用ImageList2的图标,
请问我应该怎么做。

解决方案 »

  1.   

    with treeView1.ITems.add do
    begin
      ImageIndex :=1;
      Text := '第一个结点';
    end;
    with treeView1.ITems.add do
    begin
      ImageIndex :=2;
      Text := '第二个结点';
    end;
      

  2.   

    不对。两个图标不是在一个ImageList中的。是在两个ImageList中的。
      

  3.   

    楼主不要死心眼,把两个图标放到一个ImageList中,不同的结点选不同的图标序号不就行了。
      

  4.   

    能这样的话我当然是这样了。可是不能啊。
    我那个ImageList是用函数取系统中的图标的啊。合并不了。
      

  5.   

    看一看Delphi做组件的资料吧,这些东西都是OwnerDraw的,你去看下,我也是菜鸟对DELPHI组件编程从来没用过,唉。
      

  6.   

    我那个ImageList是用函数取系统中的图标的啊。合并不了。
    可以将图标导入到相应的Imagelist 中
      

  7.   

    为什么合并不了
      ImageList1.AddImages(ImageList2);
      

  8.   

    //同意楼上~~
    uses
      ShellAPI;function GetSystemImageList(mImageList: TImageList): Boolean;
    { 返回系统图标到图形列表中是否成功 }
    var
      vHandle: THandle;
      vSHFileInfo: TSHFileInfo;
    begin
      FillChar(vSHFileInfo, SizeOf(vSHFileInfo), 0);
      vHandle := SHGetFileInfo('', 0, vSHFileInfo, SizeOf(vSHFileInfo),
        SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
      Result := vHandle <> 0;
      mImageList.Handle := vHandle;
      mImageList.ShareImages := True;
    end; { GetSystemImageList }function GetIconIndex(mPath: string): Integer;
    { 返回文件或路径所对应的图标序号 }
    var
      vSHFileInfo: TSHFileInfo;
    begin
      FillChar(vSHFileInfo, SizeOf(vSHFileInfo), 0);
      SHGetFileInfo(PChar(mPath), 0, vSHFileInfo, SizeOf(vSHFileInfo),
        SHGFI_SYSICONINDEX);
      Result := vSHFileInfo.iIcon;
    end; { GetIconIndex }procedure TForm1.FormCreate(Sender: TObject);
    begin
      GetSystemImageList(ImageList1);
      FSystemCount := ImageList1.Count;
      ImageList1.AddImages(ImageList2);
    end;
      

  9.   

    TreeView1.Items[I].ImageIndex := FSystemCount + N;