如何消除大量更新窗口内容时的闪烁现象?

edpzjh 2000-06-02 06:06:00
大量更新窗口内容时, 窗口的闪烁现象严重, 用SendMessage(handle, WM_SETREDRAW, 0, 0)及SendMessage(handle, WM_SETREDRAW, 1, 0)好象不能解决问题.
...全文
209 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
edpzjh 2000-06-03
  • 打赏
  • 举报
回复
没办法,只好用TNoteBook了.
kxy 2000-06-02
  • 打赏
  • 举报
回复
我试了半天,又看了一会儿源码,没有看出来
sorry我也不知道.如果用SendMessage(Application.Handle, WM_SETREDRAW, 0, 0)
倒是可以,不过效果和不用一样.
BTW:用TNoteBook不好吗?
kxy 2000-06-02
  • 打赏
  • 举报
回复
我试了一下,效果可以,用TNoteBook.
edpzjh 2000-06-02
  • 打赏
  • 举报
回复
用SendMessage(Handle, WM_SETREDRAW, 0, 0)可以消除闪烁,但为何SendMessage(Handle, WM_SETREDRAW, 1, 0)及Invalidate后窗口并不更新?
kxy 2000-06-02
  • 打赏
  • 举报
回复
是闪的严重,用TNoteBook吧.
kxy 2000-06-02
  • 打赏
  • 举报
回复
用TabSheet或者PageCtrl不就行了.
你可以使用Spy来看看Money的界面是什么.
另外,如果你一定要动态,我试一试看有否办法.
edpzjh 2000-06-02
  • 打赏
  • 举报
回复
这是用户介面设计的需要,如同Microsoft Money所有的用户介面都在同一个窗口上完成所以很多控件都是动态生成的.
kxy 2000-06-02
  • 打赏
  • 举报
回复
你的DBGrid一定要动态生成吗?为什么要动态生成?
可以说一下原因吗?
edpzjh 2000-06-02
  • 打赏
  • 举报
回复
动态产生DBGrid控件, 程式如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
if FDBGrid <> nil then
FDBGrid.Free;

FDBGrid := TDBGrid.Create(Self);
FDBGrid.Parent := Self;
FDBGrid.Align := alClient;
FDBGrid.DataSource := dsTPC;
end;
kxy 2000-06-02
  • 打赏
  • 举报
回复
要具体分析,你更新什么?

5,392

社区成员

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

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