Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Для чего нужен ProcessMessages

Автор: Alexander Vozny

Заметка в СМИ: На Украине занялись переводом языка Бейсик, "GOTO" теперь звучит как "ПЫДИ НА".

Многие начинающие программисты не знают о методе Application.ProcessMessages() и сталкиваются с проблемами, которых не могут объяснить. Например хотим написать что-то на форме и через 5 секунд стереть.

Нужно сделать так:


procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption:='Started';
  Application.ProcessMessages();
  sleep(1000);
  Label1.Caption:='Finished';
end;

Попробуйте убрать Application.ProcessMessages() и 'Started' вы никогда не увидите, это связано с тем, что Windows ждет пока накопятся задачи в очереди а не выполняет их сразу, Application.ProcessMessages() заставляет выполнить все задачи которые накопились в данный момент. Подробнее читайте в Help.

Это также можно применить в таком примере:


procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i:=1 to 100000 do
    Application.ProcessMessages();
end;

если не будет ProcessMessages() то пока крутится цикл мы не сможем сдвинуть или свернуть форму.

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay