to NiceFeacher:
感觉这个问题不是系统内存不够,而好像是给ImageList分配的内存不够。因为在一个ImageList田间图标达到上限的时候,仍然可以给其它N个ImageList添加图标to cwhelucky:
这些图标资源都动态添加的,不能用资源文件,而且我认为用不用资源文件和ImageList的显示无关
感觉这个问题不是系统内存不够,而好像是给ImageList分配的内存不够。因为在一个ImageList田间图标达到上限的时候,仍然可以给其它N个ImageList添加图标to cwhelucky:
这些图标资源都动态添加的,不能用资源文件,而且我认为用不用资源文件和ImageList的显示无关
用分页的概念,一次ListView只显示N个节点,使用2个ImageList,一个与ListView挂到一起,另一个存其他节点的图片。我没试,但觉得应该可以。
再去看看你的情况为什么不行!
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的溢出很讨厌
因为我想偷懒,懒得去计算,而且那样做的话再滚动条上下翻滚的时候,会有明显的延迟 ^_^