C++ builder ListView控件,在重新赋值的时候,一闪一闪的。

cdtianyuan 2017-01-14 09:43:33
同志们,有没有遇到过ListView控件,在重新赋值(列标题也重新赋值)的时候,一闪一闪的。
...全文
541 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2017-01-16
  • 打赏
  • 举报
回复
引用 7 楼 cdtianyuan 的回复:
谢谢啊。 程序中ListView1是这样的,界面上点击一个按钮,ListView1->Clear();然后,ListView1的列,和数据重新赋值。ListView1重新赋值的时候就一列一列的出来。 设置ListView1->DoubleBuffered=true;也不管用呢。
重新添加列时先: ListView1->Columns->BeginUpdate(); 添加完列以后: ListView1->Columns->EndUpdate(); 添加数据时先: ListView1->Items->BeginUpdate(); 添加完数据以后: ListView1->Items->EndUpdate();
cdtianyuan 2017-01-16
  • 打赏
  • 举报
回复
非常感谢大家,各种方法正在测试中。我的的listview有频繁的添加列,添加数据,还有draw功能,所以闪厉害。 看了妖哥的回复,搜一下关键字BeginUpdate,看到了这篇文章,但是明天要远程演示。演示完了,有时间要仔细试一下,有问题还要请教大家,谢谢。 http://www.cnblogs.com/ytaozhao/archive/2013/06/06/3120708.html
cdtianyuan 2017-01-15
  • 打赏
  • 举报
回复
引用 3 楼 u010165006 的回复:
[quote=引用 2 楼 cdtianyuan 的回复:] [quote=引用 1 楼 ccrun 的回复:] 万能大法:开启双缓冲。
ListView1->DoubleBuffered=true; 是这样写吗,语句放在哪里啊,非常感谢![/quote] 放在窗体比如TForm1的构造函数中。[/quote] 放FormCreate中可以吗?
ooolinux 2017-01-15
  • 打赏
  • 举报
回复
引用 2 楼 cdtianyuan 的回复:
[quote=引用 1 楼 ccrun 的回复:] 万能大法:开启双缓冲。
ListView1->DoubleBuffered=true; 是这样写吗,语句放在哪里啊,非常感谢![/quote] 放在窗体比如TForm1的构造函数中。
ooolinux 2017-01-15
  • 打赏
  • 举报
回复
引用 8 楼 u010165006 的回复:
在循环中 Application->ProcessMessages(); 试试有没用?
改变控件显示的值的循环。
ooolinux 2017-01-15
  • 打赏
  • 举报
回复
在循环中 Application->ProcessMessages(); 试试有没用?
cdtianyuan 2017-01-15
  • 打赏
  • 举报
回复
引用 1 楼 ccrun 的回复:
万能大法:开启双缓冲。
ListView1->DoubleBuffered=true; 是这样写吗,语句放在哪里啊,非常感谢!
cdtianyuan 2017-01-15
  • 打赏
  • 举报
回复
引用 6 楼 u010165006 的回复:
[quote=引用 4 楼 cdtianyuan 的回复:] [quote=引用 3 楼 u010165006 的回复:] [quote=引用 2 楼 cdtianyuan 的回复:] [quote=引用 1 楼 ccrun 的回复:] 万能大法:开启双缓冲。
ListView1->DoubleBuffered=true; 是这样写吗,语句放在哪里啊,非常感谢![/quote] 放在窗体比如TForm1的构造函数中。[/quote] 放FormCreate中可以吗?[/quote] 应该差不多。不过最好用构造函数和析构函数代替OnCreate和OnDestroy,因为Form有个OldCreateOrder使得OnCreate的调用顺序可变,可能导致某些对象的初始化不正常。[/quote] 谢谢啊。 程序中ListView1是这样的,界面上点击一个按钮,ListView1->Clear();然后,ListView1的列,和数据重新赋值。ListView1重新赋值的时候就一列一列的出来。 设置ListView1->DoubleBuffered=true;也不管用呢。
ooolinux 2017-01-15
  • 打赏
  • 举报
回复
引用 4 楼 cdtianyuan 的回复:
[quote=引用 3 楼 u010165006 的回复:] [quote=引用 2 楼 cdtianyuan 的回复:] [quote=引用 1 楼 ccrun 的回复:] 万能大法:开启双缓冲。
ListView1->DoubleBuffered=true; 是这样写吗,语句放在哪里啊,非常感谢![/quote] 放在窗体比如TForm1的构造函数中。[/quote] 放FormCreate中可以吗?[/quote] 应该差不多。不过最好用构造函数和析构函数代替OnCreate和OnDestroy,因为Form有个OldCreateOrder使得OnCreate的调用顺序可变,可能导致某些对象的初始化不正常。
cdtianyuan 2017-01-15
  • 打赏
  • 举报
回复
程序中ListView1是这样的,界面上点击一个按钮,ListView1->Clear();然后,ListView1的列,和数据重新赋值。ListView1重新赋值的时候就一列一列的出来。
ccrun.com 2017-01-14
  • 打赏
  • 举报
回复
万能大法:开启双缓冲。

604

社区成员

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

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