5th
Сен

Выход из бесконечного цикла

Posted by Chas under Топик-обзор

Вот, например, использую я бесконечный цикл, активируемый 1-й кнопкой. Что написать во 2-й кнопке, чтобы она остановила цикл?

DeKot:
Application.ProcessMessage позволяет влезть в любой цикл и дать команду на прерывание цикла или же полностью закрыть приложение (Halt).
Простой пример – на форме кнопки Пуск и Стоп цикла. В цикле мигает квадратик.

код:

procedure TForm1.BPuskClick(Sender: TObject);
begin
   flag:= true;
   BStop.SetFocus;
   while flag = true do
   begin
     Inc(cnt);
     if (cnt mod 10000) = 0 then begin_color:= not_color; cnt:= 1; end;
     if _color = true then Form1.Canvas.Brush.Color:= clRed
     else Form1.Canvas.Brush.Color:= clBtnFace;
     Form1.Canvas.Rectangle(100,100,150,150);
     Application.ProcessMessages;
   end;
end;

procedure TForm1.BStopClick(Sender: TObject); // Стоп по кнопке на форме
begin
   flag:= false;
   Form1.Canvas.Brush.Color:= clBtnFace;
   Form1.Canvas.Rectangle(100,100,150,150);
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; // Стоп по клавише клавиатуры (любая)
   Shift: TShiftState);
begin
    BStopClick(Sender);
end;

Прерывание цикла или по кнопке формы или по любой клавише клавиатуры.
Полоностью проект во вложении. Прерывания цикла.rar

Тема на форуме

Похожие статьи

Теги: