开发者

Implement F3 Find Next using TFindDialog

开发者 https://www.devze.com 2022-12-31 12:45 出处:网络
I\'ve implemented a search using the TFindDialog on my开发者_C百科 form. Everything works well except that I cannot find a way to mimic the \"F3 - Find Next\" behaviour as in Notepad. Once you have en

I've implemented a search using the TFindDialog on my开发者_C百科 form. Everything works well except that I cannot find a way to mimic the "F3 - Find Next" behaviour as in Notepad. Once you have entered a search string, pressing F3 finds the next instance without opening the search dialog.

Regards, Pieter.


Here's a sketch how one could do this:

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

and

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;


Alternativaly you could try the standard actions TSearchFind/TSearchFindNext. However I haven't tried them myself, so I can't say how well they work in practice.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号