Для чего нужен ProcessMessages
|
Заметка в СМИ:
На Украине занялись переводом языка Бейсик, "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() то пока крутится цикл мы не сможем сдвинуть
или свернуть форму.
|