Как я могу отключить обновление экрана, которое обновляет много элементов управления? - PullRequest
13 голосов
/ 25 сентября 2010

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

Кажется, я вспоминал, как делал что-то подобное в BCB около 10 лет назад, но забуду, как.

Ответы [ 2 ]

41 голосов
/ 25 сентября 2010

Я не уверен, есть ли для этого специфичный для Delphi метод, но с помощью Win32 API это делается с помощью сообщения WM_SETREDRAW.

Редактировать: Спасибо Кену Уайту и Сертаку Акьюзу за пример кода ниже.

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;
9 голосов
/ 25 сентября 2010

Я просто держу Visible = False, пока все не будет хорошо и готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...