フォームで TFindDialog を使用して検索を実装しました。メモ帳のように「F3 - 次を検索」の動作を模倣する方法が見つからないことを除いて、すべてがうまく機能します。検索文字列を入力したら、F3 キーを押すと、検索ダイアログを開かずに次のインスタンスが検索されます。
よろしく、ピーター。
フォームで TFindDialog を使用して検索を実装しました。メモ帳のように「F3 - 次を検索」の動作を模倣する方法が見つからないことを除いて、すべてがうまく機能します。検索文字列を入力したら、F3 キーを押すと、検索ダイアログを開かずに次のインスタンスが検索されます。
よろしく、ピーター。
これを行う方法のスケッチは次のとおりです。
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;
または、標準アクションTSearchFind / TSearchFindNextを試すこともできます。ただし、自分で試したことがないので、実際にどれだけうまく機能するかはわかりません。