有没有一种简单方便的方法来判断TForm上的所有组件,框架和子控件何时被完全绘制?我基本上在寻找相当于网页中的onload()事件,但在Delphi表单的上下文中。优选地,即使某些表单元素当前不可见,该技术仍然可以工作,并且在表单调整大小发生之后它也会再次触发。我有一些表格元素“摇晃”正在进行,因为不同的表单元素自动调整它们的大小,我想关闭重绘,直到完成所有操作以获得更清洁的外观。
答案 0 :(得分:0)
Delphi控件具有BeginUpdate和EndUpdate过程。回到我做Delphi编程时 - 已经有一段时间了 - 我们想要加载一个占用大量数据的网格,我们在加载之前调用BeginUpdate,然后在加载完成后调用EndUpdate。这告诉控件退出接收消息(即滚动为新记录加载)并等待一次更新 - 使所有内容“看起来”更快。您可以将控件设置为BeginUpdate模式,直到重新绘制完成,然后将EndUpdate设置为同步所有内容。
答案 1 :(得分:0)
看看DoubleBuffered属性:
确定控件的图像 直接渲染到窗口或 首先绘制到内存中的位图。 Delphi语法:property DoubleBuffered:Boolean;描述 当DoubleBuffered为false时, 窗口控制自己绘制 直接到窗口。什么时候 DoubleBuffered是真的,窗口 控件将自身描绘成内存中 然后用于绘制的位图 窗口。双缓冲减少了 控制时闪烁的量 重绘,但更多的记忆 密集。当窗口控件是 码头站点,并有一个相关的码头 经理,它必须是双缓冲的。 注意:某些控件,例如 TRichEdit,无法将自己画成 一个位图。对于这样的控制, DoubleBuffered必须设置为false。