Подтвердить что ты не робот

Как отключить обновление экрана, которое обновляет множество элементов управления?

У меня есть форма с 50 или более элементами управления, которые я создаю и добавляю во время выполнения. Я не хочу, чтобы потом явился один за другим; Я бы предпочел отключить буферизацию рисования/начала в начале, а затем сразу увидеть, как все они появляются.

Кажется, я вспоминаю, как это делалось в BCB около 10 лет назад, но забывайте, как.

4b9b3361

Ответ 1

Я не уверен, есть ли для этого метод Delphi, но с использованием Win32 API это делается через WM_SETREDRAW.

Изменить: Благодаря Ken White и Sertac Akyuz для примера кода ниже.

begin
  // Defer updates
  SendMessage(Handle, WM_SETREDRAW, WPARAM(False), 0);
  try
    // Create all your controls here
  finally
    // Make sure updates are re-enabled
    SendMessage(Handle, WM_SETREDRAW, WPARAM(True), 0);
    // Invalidate;  // Might be required to reflect the changes  
  end;
end;

Ответ 2

Я просто держу Visible = False, пока все не станет приятным и готовым.