注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

珠海渔郎之电子网档

项目管理 + 程序开发 + Delphi + 电脑应用 + 数码 + 进化感悟

 
 
 

日志

 
 

[存档2006-4-16]ListView的闪烁问题  

2009-07-12 12:21:36|  分类: Delphi |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

众里寻他千百度,踏破铁鞋无觅处;原在搜索引擎处,得来全部费工夫!

一个ListView的闪烁问题,困挠一阵子了,问了新同事一下,没有想到就轻松解决了!Perfect!即使50毫秒刷新显示50条记录,也不会有任何的闪烁感觉!而处理的方式又是如此简单,只要4条语句就可以解决!为了这个问题,同事却花了不少时间来研究~好久没有见到这么有用的Tips了!同事说以前问过我题目,呵呵,没有想到他也帮我解决了这个难题啊。

解决ListView闪烁的终极大法

By hsn
使用ListView的时候,如果内容稍多,即使采用BeginUpdate,EndUpdate,同样会闪烁的很厉害,采用下面的方法就可以解决这个问题:
首先在使用ListView的地方,都用一个Panel,然后在Panel里面放置ListView,最后在你的BeginUpdate和EndUpdate的前后添加如下代码:

  SendMessage(ListView1.Parent.Handle, WM_SETREDRAW, 0, 0);
  /// Do List Item Operation
  SendMessage(ListView1.Parent.Handle, WM_SETREDRAW, 1, 0);
  R := ListView1.ClientRect;
  InvalidateRect(ListView1.Handle, @R, False);

请对比如下代码的效果:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  with ListView1.Items do
  try
    BeginUpdate;
    Clear;
    for i := 0 to 100 do
    with Add do
    begin
      Caption := IntToStr(i);
      SubItems.Add('Sub 1');
      SubItems.Add('Sub 2');
      SubItems.Add('Sub 3');
      SubItems.Add('Sub 4');
      SubItems.Add('Sub 5');
    end;
  finally
    EndUpdate;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i : Integer;
  R : TRect;
begin
  with ListView1.Items do
  try
    SendMessage(ListView1.Parent.Handle, WM_SETREDRAW, 0, 0);
    BeginUpdate;
    Clear;
    for i := 0 to 100 do
    with Add do
    begin
      Caption := IntToStr(i);
      SubItems.Add('Sub 1');
      SubItems.Add('Sub 2');
      SubItems.Add('Sub 3');
      SubItems.Add('Sub 4');
      SubItems.Add('Sub 5');
    end;
  finally
    EndUpdate;
    SendMessage(ListView1.Parent.Handle, WM_SETREDRAW, 1, 0);
    R := ListView1.ClientRect;
    InvalidateRect(ListView1.Handle, @R, False);
  end;
end;

 

  评论这张
 
阅读(102)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017