我有一个简单的测试程序,我试图让一个虚拟列表视图工作。但它不会正常工作,因为当TListview OwnerData被启用时,OnChange不再被调用时,一组项目在UN-selected。结果,我得到了一组越来越大的虚拟项,它们被标记为Selected,但它们在ListView本身中没有被选中。
但是,在第二个不在Ownerdata中的ListView中,所有UnSelect项都会导致OnChange,这是可以预期的。
我已经研究了好几天了,但是我不能让它工作。如果有人愿意看一看,看看我可能做错了什么,那就太好了,因为我真的不认为问题出在我自己的代码上……
完整的测试程序源代码可以在这里下载(200 k):
https://sartrack.nz/temp/VirtualListViewTest.zip
谢谢,巴特
1条答案
按热度按时间wz8daaqr1#
正如大卫所说,这是设计的。在虚拟模式下,您需要连接
OnSelectItem
事件,以获得有关项目选择状态更改的通知。如果您允许在视图中进行多项选择,则
OnSelectItem
是不够的,OnDataStateChange
也必须进行布线。然后强制使用这两个事件,因为每个事件仅覆盖用例的子集。