to NiceFeacher:
  感觉这个问题不是系统内存不够,而好像是给ImageList分配的内存不够。因为在一个ImageList田间图标达到上限的时候,仍然可以给其它N个ImageList添加图标to cwhelucky:
  这些图标资源都动态添加的,不能用资源文件,而且我认为用不用资源文件和ImageList的显示无关

解决方案 »

  1.   

    你不会把图标一次全给显示出来吧?这样可不可以:
    用分页的概念,一次ListView只显示N个节点,使用2个ImageList,一个与ListView挂到一起,另一个存其他节点的图片。我没试,但觉得应该可以。
    再去看看你的情况为什么不行!
      

  2.   

    我在编辑环境下,手工给IMAGELIST加图标,没有任何问题
      

  3.   

    Windows图标资源有限的原因,我没办法
      

  4.   

    关键代码就这么一点儿,用来显示一个图标库的图标列表
        for i:=0 to iNumberOfIcons-1 do
        begin
          aIcon:=TIcon.Create;
          aIcon.Handle :=GetIcon;   //GetIcon是一个函数,获得一个图标句柄
          IFindIcons:=IFindIcons+1;
          ImgList_LView.AddIcon(aIcon);
          ImgList_LViewSmall.AddIcon(aIcon);
          aListItem:=LView_Source.Items.Add;
          aListItem.ImageIndex :=ImgList_LView.Count -1;
          aListItem.Caption :=...;
          ...
        end;
    ImageList的溢出很讨厌
      

  5.   

    to victorchen_2000:
      因为我想偷懒,懒得去计算,而且那样做的话再滚动条上下翻滚的时候,会有明显的延迟  ^_^