Delphi 6:检测表格何时完全涂漆?

时间:2010-10-14 02:29:19

标签: delphi resize refresh onload paint

有没有一种简单方便的方法来判断TForm上的所有组件,框架和子控件何时被完全绘制?我基本上在寻找相当于网页中的onload()事件,但在Delphi表单的上下文中。优选地,即使某些表单元素当前不可见,该技术仍然可以工作,并且在表单调整大小发生之后它也会再次触发。我有一些表格元素“摇晃”正在进行,因为不同的表单元素自动调整它们的大小,我想关闭重绘,直到完成所有操作以获得更清洁的外观。

2 个答案:

答案 0 :(得分:0)

Delphi控件具有BeginUpdate和EndUpdate过程。回到我做Delphi编程时 - 已经有一段时间了 - 我们想要加载一个占用大量数据的网格,我们在加载之前调用BeginUpdate,然后在加载完成后调用EndUpdate。这告诉控件退出接收消息(即滚动为新记录加载)并等待一次更新 - 使所有内容“看起来”更快。您可以将控件设置为BeginUpdate模式,直到重新绘制完成,然后将EndUpdate设置为同步所有内容。

答案 1 :(得分:0)

看看DoubleBuffered属性:

  

确定控件的图像   直接渲染到窗口或   首先绘制到内存中的位图。   Delphi语法:property   DoubleBuffered:Boolean;描述   当DoubleBuffered为false时,   窗口控制自己绘制   直接到窗口。什么时候   DoubleBuffered是真的,窗口   控件将自身描绘成内存中   然后用于绘制的位图   窗口。双缓冲减少了   控制时闪烁的量   重绘,但更多的记忆   密集。当窗口控件是   码头站点,并有一个相关的码头   经理,它必须是双缓冲的。   注意:某些控件,例如   TRichEdit,无法将自己画成   一个位图。对于这样的控制,   DoubleBuffered必须设置为false。