Реализовать F3 Find Next с помощью TFindDialog - PullRequest
1 голос
/ 19 мая 2010

Я реализовал поиск, используя TFindDialog в моей форме. Все работает хорошо, за исключением того, что я не могу найти способ имитировать поведение "F3 - Find Next" , как в Блокноте. Как только вы ввели строку поиска, нажатие F3 находит следующий экземпляр, не открывая диалоговое окно поиска.

С уважением, Питер.

Ответы [ 2 ]

1 голос
/ 19 мая 2010

Вот эскиз, как можно это сделать:

type
  TForm1 = class(TForm)
    FindDialog1: TFindDialog;
    procedure FindDialog1Find(Sender: TObject);
    procedure SearchFind1Execute(Sender: TObject);
    procedure SearchFindNext1Execute(Sender: TObject);
  private
    FSearchText: string;
    procedure Search;
  end;

и

procedure TForm1.Search;
begin
  // Do the real searching here...
  MessageBox(Handle, PChar('Looking for "' + FSearchText + '".'), nil, 0);
end;

procedure TForm1.SearchFind1Execute(Sender: TObject);
begin
  // Triggered by Ctrl-F
  FindDialog1.FindText := FSearchText;
  FindDialog1.Execute;
end;

procedure TForm1.SearchFindNext1Execute(Sender: TObject);
begin
  // Triggered by F3
  if FSearchText = '' then
    SearchFind1.Execute
  else
    Search;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
begin
  // Triggered by button click in FindDialog1
  FSearchText := FindDialog1.FindText;
  Search;
end;
0 голосов
/ 20 мая 2010

Альтернативно вы можете попробовать стандартные действия TSearchFind / TSearchFindNext . Однако я сам не пробовал их, поэтому не могу сказать, насколько хорошо они работают на практике.

...