我在表单上使用TFindDialog实现了搜索。一切都运作良好,除了我找不到像记事本中模仿“F3 - 查找下一个”行为的方法。输入搜索字符串后,按F3可查找下一个实例,而无需打开搜索对话框。
问候,彼得。
答案 0 :(得分: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;
答案 1 :(得分:0)
Alternativaly您可以尝试标准操作TSearchFind / TSearchFindNext。但是我自己没有尝试过,所以我不能说它们在实践中的表现如何。