Советы по Delphi

         

Для чего нужен ProcessMessages?


Многие начинающие программисты не знают о методе 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() то пока крутится цикл мы не сможем сдвинуть или свернуть форму.

Прислал Alexander Vozny. [000485]



Содержание раздела