delphi – 在运行时插入控件集非常慢

我们有一个销售点应用程序,在这个应用程序中我们有一个滚动框容器.如果卖家选择产品,则会创建新产品行并将其插入滚动框.产品行组件是一个框架 – 文本框,按钮和标签.

但是在运行时将此产品行控件插入到滚动框中会出现一些问题.这很慢.我可以看到选择产品如何将edittext组件慢慢地绘制到滚动框中.

我尝试在ScrollBox.InsertControl之前将组件的可见性设置为false并在之后启用它,但它无助于加快速度.我还读到了关于DisableAlign / EnableAlign的事情,但我不确切知道我必须把这行代码放在哪里.

如何加快将此自定义组件插入到表单的滚动框容器中?

最佳答案
TScrollBox没有使用WM_SETREDRAW消息的BeginUpdate / EndUpdate,而是you can get the same effect.我可能会避免像LockWindowUpdate那样的重手法.

  SendMessage(ScrollBox1.Handle, WM_SETREDRAW, 0, 0);
  try
    // add controls to scrollbox
    // set scrollbox height
  finally
    SendMessage(ScrollBox1.Handle, WM_SETREDRAW, 1, 0);
    RedrawWindow(ScrollBox1.Handle, nil, 0, RDW_ERASE or RDW_INVALIDATE or RDW_FRAME or RDW_ALLCHILDREN);
  end;

转载注明原文:delphi – 在运行时插入控件集非常慢 - 代码日志