Показать сообщение отдельно
  #2  
Старый 18.02.2016, 06:14
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Все можно, только надо подробнее знать задачу.
Самый простой вариант:
1 Реализуешь алгоритм поиска
2. Внутри поиска после выполнения одного шага (итерации цикла, рекурсивного вызова) делаешь проверку "глобального" флага. Т.е. пока флаг не выставлен, програ ждет.
3. После прохождения проверки сбрасываешь флаг
4. На кнопку вешаешь поднятие флага.
5. профит.

например:
Код:
type
  TForm1=class(TForm)
  ...
  private
    CanContinue : Boolean;
  end;

...

procedure TForm.FormCreate(Sender : TObject);
begin
  Flag := False;
end;

// собственно алгоритм
// пусть просто выводит цифры в мемо от 1 до 10
procedure TForm1.DoMain; 
var
  I : Integer;
begin
  For I := 1 To 10 Do
    Begin
      Memo1.Lines.Add(IntToStr(I));

      // теперь ждем нажатия кнопки
      While Not CanContinue Do
        Begin
          Application.ProcessMessages;
          Sleep(250); // ждем 1/4 сек
        End;
      CanContinue := False; // сбросили флаг
    End;
end;

// кнопка выполнения сл. шага
procedure TForm1.Button1Click(Sender : TObject);
begin
  CanContinue := True;
end;
Ответить с цитированием