运行环境是XP + delphi 7
程序执行下边语句后listview1会删除掉第一行和二行,而不是只删除第一行,那位朋友给解决一下,谢谢.
sendmessage(listview1.Handle,LVM_DeleteItem,1,0)

解决方案 »

  1.   

    我觉得是listview控件的bug,如果不设成vsReport或者vsList是没问题的。
    我在msdn帮助上看到LVM_DeleteItem的用法也像楼主这么用的。不知道其他高手怎么看?
      

  2.   

    viewstyle怎么设置也一样
    用listview1.items.Item[1].Delete可以正常删除..郁闷
      

  3.   

    会的朋友帮解决一下吧,用别的方法也行,只要能实现删除外部程序中listview记录的功能就行
      

  4.   

    我在Delphi7里也是会删除两行,但在Delphi2006里就不会出现这个问题。
    估计是Delphi7的问题,用Delphi2006编译吧。
      

  5.   

    封装的BUG,使用ListView1.Items.Delete(1)代替。
    不过可气的是,Borland在1998年就知道了这个BUG,到D7中还有!
    http://groups.google.com/group/borland.public.delphi.winapi/browse_thread/thread/4af354b49cc29641/ffb141678ec0e81d?lnk=st&q=sendmessage(listview1.Handle%2CLVM_DeleteItem%2C1%2C0)&rnum=2&hl=zh-CN#ffb141678ec0e81d
      

  6.   

    谢谢几位朋友的帮助,可以我现在要实现的是控制外部程序的listview,不知道有没有什么可行的办法?或者删除后再把误删的插入?不知可行吗?
      

  7.   

    用Postmessage没问题(Windows Server 2003 SP1 + Delphi 7)
      

  8.   

    回楼上,还是不行,也是删除两行,我的是XP系统 + D7
      

  9.   

    我这儿用SendMessage有问题,但PostMessage没问题,呵呵
      

  10.   

    没有没可能该消息只是用于TListItem自身的释放,当LV只有一条记录的时候也不会报任何的错误信息。
      

  11.   

    有没有一个变通的方法来实现sendmessage(listview1.Handle,LVM_DeleteItem,1,0)这个功能?
      

  12.   

    希望高手能给个简单的办法,要删除的是其它程序的listview,自定义消息不太可能