使用ListView,操作时被锁定

jlbnet 2007-04-27 12:59:33
使用标准的ListView控件时,有时会遇到调用 ListView.FindCaption,程序就挂在那里不动了
换成 delphi demo里的Virtual ListView方法,做一个类似的程序,在刷新ListView显示时,调用 ListView.Items.Count = FList.Count,又挂在那里了,好象是被锁住了,但是检查代码里没有哪里会锁的

有哪位遇到过这样的情况?怎么解决的?
...全文
239 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jlbnet 2007-04-30
  • 打赏
  • 举报
回复
看样子没人关心

我改换操作方式了,所有信息在程序里用一个 TStringList 维护,然后每两秒用定时器来更新ListView的显示,从TStringList重建ListView的显示内容。有点浪费,不过这个问题算是解决了,避开了。
jlbnet 2007-04-27
  • 打赏
  • 举报
回复
确实是在线程里调用的。
现在已经不用 FindCaption了,换成 Virtual ListView了,每次要更新ListView的显示,都要调用ListView.Items.Count = FList.Count,这时又锁住了。
我现在手工加一个临界区,每次要用到 ListView的时候都手工锁住看行不行。

网上查的时候,发现有个贴子提到pyQt,说是要先 qApp.Lock; 操作ListView,再qApp.Unlock。不知道Delphi里的qt是不是也要这样
numbbb 2007-04-27
  • 打赏
  • 举报
回复
是在线程里调用的吧,自己用for写个类似FindCaption功能的函数就应该可以了
jlbnet 2007-04-27
  • 打赏
  • 举报
回复
就象是用了 CriticalSection 之后,死锁那样的现象。我只要去掉这段代码就很流畅,加上就不行了。其他地方确实有用到临界区了。
hongqi162 2007-04-27
  • 打赏
  • 举报
回复
挂着不动是什么现象?
HsWong 2007-04-27
  • 打赏
  • 举报
回复
查查你其它地方有无问题

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧