delphi 7 sendmessage LVM_DELETEITEM 为什么一次删除两条记录?????
可是我选中的只有一条。
可是我选中的只有一条。
解决方案 »
- 非常奇怪的一个ADO调用存储过程的问题?
- 请长沙的朋友帮忙回答一个简单的问题,或者是熟悉长沙的人都可以. 50+100分相送.
- 如何按输入关键字搜索文本文件,将指针移至满足条件的行.
- 排序代码错误,help!在线给分
- 十万火急,求助:关于TDateTimePicker的时间显示问题。
- 超级菜:用WEBBROWSER控件做浏览器,怎么控制前进后退按扭什么时候enable
- 在一个数据集里怎样把某列的数据复制到另一列中。方法要有效。
- 大家一起吧,我们一起来开软件公司
- delphi 5 的垃圾书,千万不要买。
- 各位大哥,请教一个很菜的问题
- 济南下大雨了
- WebBrowser1.OleObject.document.links.item(i).Click 单击超此超链接,如何让打开此链接的IE为最小化或隐藏?
LVM_DELETEITEM 的 WParam 是 index, 所以, 我觉得不太可能
首先ListView是一个系统控件,它的数据实际上分为两部分,一部分存储由系统的API进行管理,另一部分由VCL控件TListView这个类进行管理。
当试图发送一个 LVM_DELETEITEM消息之后,首先响应该消息的是API,于是会把某一个Index删除掉,并且把内部的Index更新掉,然后通知TListView该消息,TListView收到消息之后,就通知相应的ListItem删除,而ListItem并不知道该消息已经触发了,以为是VCL内部删除,于是又发一个LVM_DELETEITEM消息。从而重复删除。实际上此时在TListView类管理的的数据当中,后面被删除的那个ListItem是存在于内存的,但是由于TListView的重绘是根据API当中的消息来重绘的,而在系统内部已经被删除掉了,所以就没有再通知重绘,自然被刷新之后就再也看不到了。