Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

прекратить выполнение цикла нажатием на кнопку

9.1K
02 августа 2005 года
net
15 / / 22.06.2005
можно ли прекратить выполнение цикла нажатием на кнопку? Вот такой вопрос.
10
02 августа 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by net
можно ли прекратить выполнение цикла нажатием на кнопку? Вот такой вопрос.


Код:
type
  TMainForm = class(TForm)
    ...
  private
    FBreak: Boolean;
  end;

procedure TMainForm.Loop;
begin
  while not FBreak do
  begin
    DoSomething;
    Application.ProcessMessages;
  end;
end;

procedure TMainForm.BreakButtonClick(Sender: TObject)
begin
  FBreak := True;
end;
9.1K
02 августа 2005 года
net
15 / / 22.06.2005
Ключевое слово: Application.ProcessMessages;
спасибочки!
5
09 августа 2005 года
hardcase
4.5K / / 09.08.2005
в некоторых случаях Application.ProcessMessages может тормозить из-за большого количества сообщений от системы,
поэтому можно распараллелиться:
Код:
type
  TMyTaskThread = class(TThread)
    protected
      procedure Execute; override;
  end;//of class

procedure TMyTaskThread.Execute;
  begin
    while not Terminated do
        NextCycle;
  end;


а в обработчике OnClick поставить
 
Код:
MyTaskThread.Terminate;


а нитку создавать нужно так (чтобы он сам вызвал деструктор по завершении Execute)
 
Код:
MyTaskThread:=TMyTaskThread.Create(true);
  MyTaskThread.FreeOnTerminate:=true;
  MyTaskThread.Resume;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог