Метод Delphi ProcessMessages

Выполняя операции требующие длительных временных затрат, приложение не реагирует на  действия пользователя и не реагирует на события приложения,  визуальные изменения на форме не отображаются, программа зависает на некоторое время.  Подобные ситуации возможны в работе циклов, когда происходит обработка большого числа данных.

Для того чтобы исправить сложившееся положение необходимо использовать метод  ProcessMessages. Этот метод принадлежит классу Application (данный класс  автоматически создается при создании приложения). Данный метод обязывает приложение обработать поступившие и ожидающие своей очереди сообщения.

пример метода ProcessMessagesРасположим на форме компоненты Label и кнопку.

С помощью оператора цикла заставим перебирать числа от 1 до 10000. И если не будет строки Application.ProcessMessages; - то программа на время зависнет пока не выдаст окончательный результат. Поэтому обработчик нажатия кнопки должен быть таким:

procedure TForm1.Button1Click(Sender: TObject);
var
   I : Integer;
begin   
   for I := 1 to 10000 do
    begin
     Label1.Caption := 'Значение равно ' +IntToStr(I);
     Application.ProcessMessages;
    end;
end;

Итог: мы разобрались как с помощью метода ProcessMessages наши приложения не впадали в ступор при длительных вычислениях.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *