Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.06.2012, 05:04
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Запрет перерисовки формы

Вот кусок кода

Код:
   Perform(WM_SETREDRAW,0,0);
   for i:=0 to High(ga) do
   begin
     if ga[i].value<>'0' then AddEl(ga[i].value);
   end;
   Perform(WM_SETREDRAW,1,0);
   Form1.Refresh;

Вначале отключается перерисовка формы.
В цикле создается некоторое количество компонентов TPanel (порой большое количество). Для более быстрой работы и решил отключать перерисовку.
Но в конце форма не перерисовывается (созданные компоненты не отображаются, ХОТЯ СОЗДАЮТСЯ). При клике по ним мышью, меняется их стиль, и они появляются.

Подскажите из-за чего может быть проблема?
Ответить с цитированием
  #2  
Старый 21.06.2012, 06:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Я пользовался LockWindowUpdate().
В твоем случае можно просто вызвать Invalidate или Update для формы в конце процедуры.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
morebeauty (21.06.2012)
  #3  
Старый 21.06.2012, 07:05
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Код:
   Perform(WM_SETREDRAW,0,0);
   for i:=0 to High(ga) do
   begin
     if ga[i].value<>'0' then AddEl(ga[i].value);
   end;
   Perform(WM_SETREDRAW,1,0);

   Form1.refresh;
   Form1.Update;
   form1.Invalidate;

Не помогло.
Ответить с цитированием
  #4  
Старый 21.06.2012, 07:35
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

можно каждую панель refresh
Ответить с цитированием
  #5  
Старый 21.06.2012, 07:39
Аватар для morebeauty
morebeauty morebeauty вне форума
Начинающий
 
Регистрация: 21.06.2012
Сообщения: 106
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

А еще можно не отключать перерисовку... тогда даже быстрее будет )
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:47.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter