1

フォームで TFindDialog を使用して検索を実装しました。メモ帳のように「F3 - 次を検索」の動作を模倣する方法が見つからないことを除いて、すべてがうまく機能します。検索文字列を入力したら、F3 キーを押すと、検索ダイアログを開かずに次のインスタンスが検索されます。

よろしく、ピーター。

4

2 に答える 2

1

これを行う方法のスケッチは次のとおりです。

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;
于 2010-05-19T14:17:10.063 に答える
0

または、標準アクションTSearchFind / TSearchFindNextを試すこともできます。ただし、自分で試したことがないので、実際にどれだけうまく機能するかはわかりません。

于 2010-05-20T08:42:19.167 に答える