代码之家  ›  专栏  ›  技术社区  ›  Pieter van Wyk

使用TFindDialog实现F3 Find Next

  •  1
  • Pieter van Wyk  · 技术社区  · 16 年前

    我已经在表单上使用TFindDialog实现了一个搜索。一切都很好,只是我找不到办法模仿 记事本中的行为。输入搜索字符串后,按F3查找下一个实例,而不打开搜索对话框。

    你好,彼特。

    2 回复  |  直到 16 年前
        1
  •  1
  •   Uli Gerhardt    16 年前

    下面是一个如何做到这一点的草图:

    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;
    
        2
  •  0
  •   Uli Gerhardt    16 年前

    TSearchFind / TSearchFindNext . 但是我自己没有试过,所以我不能说他们在实践中有多好。

    推荐文章