Последние записи
- Получение картинки с веб-камеры
- Скопировать определённый кусок image
- Сделать printscreen экрана и сохранить
- Написать программу, считывает с клавиатуры определенное колличество цифр, а на экран выводит сумму наибольшей цифры
- Создать системную, невидимую, только для чтения папку
- Какой яп и ide выбрать для кроссплатформенного программирования?
- Скачать html страницу в memo с помощью indy
- Как разорвать adsl соединение с интернетом?
- Как отключить/включить сетевое соединение?
- Передать состояние CheckBox
5th
Сен
Выход из бесконечного цикла
Posted by Chas under Топик-обзор
Вот, например, использую я бесконечный цикл, активируемый 1-й кнопкой. Что написать во 2-й кнопке, чтобы она остановила цикл?
DeKot:
Application.ProcessMessage позволяет влезть в любой цикл и дать команду на прерывание цикла или же полностью закрыть приложение (Halt).
Простой пример – на форме кнопки Пуск и Стоп цикла. В цикле мигает квадратик.
код:
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
