如何同时更改控件,而不需要重新绘制? [英] How to change controls simultaneously without repainting each one?

查看:190
本文介绍了如何同时更改控件,而不需要重新绘制?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如,我需要在运行时禁用两个按钮。当我禁用第一个按钮后,它会变灰,第二个 - 它也变灰了。但我不知道如何使重画同时进行!



我需要这样的东西:


  1. 冻结Form(禁用重绘)

  2. 禁用第一个按钮

  3. 禁用第二个按钮

  4. 启用重新绘制表单

如何实现?

解决方案

查看Win32 API WM_SETREDRAW 消息。例如:

  SendMessage(Handle,WM_SETREDRAW,False,0); 
Button1.Enabled:= False;
Button2.Enabled:= False;
SendMessage(Handle,WM_SETREDRAW,True,0);
InvalidateRect(Handle,nil,True);


For example I need to disable two buttons in runtime. After I disabled first button it bacame gray, the second - it also became gray. But I do not know how to make the repainting simultaneous!

I need something like that:

  1. freeze the Form (disable repainting)
  2. disable first button
  3. disable second button
  4. Enable Form repainting

How to implement that?

解决方案

Look at the Win32 API WM_SETREDRAW message. For example:

SendMessage(Handle, WM_SETREDRAW, False, 0);
Button1.Enabled := False;
Button2.Enabled := False;
SendMessage(Handle, WM_SETREDRAW, True, 0);
InvalidateRect(Handle, nil, True);

这篇关于如何同时更改控件,而不需要重新绘制?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆