当调整具有许多控件的表单时,由于闪烁,表单看起来很糟糕。有什么技巧可以让表单更加流畅?
答案 0 :(得分:16)
procedure TForm1.WMEnterSizeMove(var Message:TWMMove);
begin
Self.DisableAlign;
end;
procedure TForm1.WMExitSizeMove(var Message:TWMMove);
begin
Self.EnableAlign;
end;
答案 1 :(得分:5)
尝试使用WM_SETREDRAW(not LockWindowUpdate)。
您可能还要查看DeferWindowPos。
答案 2 :(得分:5)
复杂表单通常由嵌套面板组成,重绘过程可能会导致闪烁。如果您的项目就是这种情况,那么可能帮助有两个简单的解决方案:
FullRepaint
属性。 DoubleBuffered
。您不会在对象检查器上找到此属性,因此将 DoubleBuffered := true;
放在FormCreate中。答案 3 :(得分:1)
我已经解决了这个问题:
通过玩这个活动,你会得到一个在你调整大小时变成空白的表格,但是当你“放手”时它会整齐地填充。
业务收益指数
答案 4 :(得分:0)
我通过每个父对齐 1 非alClient
组件来避免闪烁,始终与alClient
(例如TPanel
)配对以包含所有其他组件。将它们分组在没有边框的面板中。
假设您要为主视图指定三件事:alLeft
,alTop
和alClient
。
不要这样做:
Form
alTop
alLeft
alClient // your main view
但是将这些嵌入如下:
Form
alTop
alClient // panel to avoid flicker
alLeft
alClient // your main view
嵌入多个alTop
元素的相同故事。