⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 实例——应用查找替换对话框.txt

📁 Delphi 7组件应用实例 书籍语言: 简体中文 书籍类型: 程序设计 授权方式: 免费软件 书籍大小: 105 KB
💻 TXT
字号:
unit UFind;
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, DBCtrls;

type
  TFFind = class(TForm)
    ReplaceDialog1: TReplaceDialog;
    FindDialog1: TFindDialog;
    BFind: TButton;
    RichEdit1: TRichEdit;
    BReplace: TButton;
    procedure BFindClick(Sender: TObject);
    procedure FindDialog1Find(Sender: TObject);
    procedure BReplaceClick(Sender: TObject);
    procedure ReplaceDialog1Replace(Sender: TObject);
    procedure ReplaceDialog1Find(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FFind: TFFind;

implementation

{$R *.dfm}

procedure TFFind.FormCreate(Sender: TObject);
begin
  BFind.Caption :='查找...';
  BReplace.Caption :='替换...';
  RichEdit1.Text :='Welcome,This is a RichEdit Component!';
end;


procedure TFFind.BFindClick(Sender: TObject);
begin
  //确定查找对话框的显示位置
  FindDialog1.Position := Point(RichEdit1.Left + Richedit1.Width,
          Richedit1.Top+RichEdit1.Height);
  //显示查找对话框
  FindDialog1.Execute;
end;

//查找对话框的查找功能
procedure TFFind.FindDialog1Find(Sender: TObject);
var
  FoundAt: LongInt;                 //特定字符串的位置
  StartPos, ToEnd: Integer;         //查找的起始位置和查找长度
begin
    if Richedit1.SelLength = 0 then
      StartPos := 0    //如果尚未开始查找,则从头开始查找
    else               //否则,从上次查找的结果之后开始查找
      StartPos := Richedit1.SelStart + Richedit1.SelLength  ;

    ToEnd := Length(Richedit1.Text) - StartPos;

    FoundAt := Richedit1.FindText(FindDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
    //如果已找到特定字符串,则进行如下处理
    if FoundAt <> -1 then
    begin
      Richedit1.SetFocus;   //设置焦点
      Richedit1.SelStart := FoundAt;
      Richedit1.SelLength := Length(FindDialog1.FindText);
    end
    else
      //如果未找到特定字符串,则进行如下处理
      if (MessageDlg('已搜索到文档尽头,未发现要搜索的字符串,是否从头搜索?',   mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
         Richedit1.SelLength :=0;
end;

procedure TFFind.BReplaceClick(Sender: TObject);
begin
  //确定替换对话框的显示位置
  ReplaceDialog1.Position := Point(RichEdit1.Left + RichEdit1.Width,
       RichEdit1.Top+RichEdit1.Height);
  //显示替换对话框
  ReplaceDialog1.Execute;
end;

//替换对话框的查找功能
procedure TFFind.ReplaceDialog1Find(Sender: TObject);
var
  FoundAt: LongInt;                 //特定字符串的位置
  StartPos, ToEnd: Integer;         //查找的起始位置和查找长度
begin
   if Richedit1.SelLength = 0 then
      StartPos := 0    //如果尚未开始查找,则从头开始查找
    else               //否则,从上次查找的结果之后开始查找
      StartPos := Richedit1.SelStart + Richedit1.SelLength  ;
    ToEnd := Length(Richedit1.Text) - StartPos;

    FoundAt := Richedit1.FindText(ReplaceDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
    //如果已找到特定字符串,则进行如下处理
    if FoundAt <> -1 then
    begin
      Richedit1.SetFocus;   //设置焦点
      Richedit1.SelStart := FoundAt;
      Richedit1.SelLength := Length(ReplaceDialog1.FindText);
    end
    else
      //如果未找到特定字符串,则进行如下处理
      if (MessageDlg('已搜索到文档尽头,未发现要搜索的字符串,是否从头搜索?',
           mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
         Richedit1.SelLength :=0;
end;

//替换对话框的替换功能
procedure TFFind.ReplaceDialog1Replace(Sender: TObject);
var
  FoundAt: LongInt;                 //特定字符串的位置
  StartPos, ToEnd: Integer;         //查找的起始位置和查找长度
begin
    if RichEdit1.SelLength=0 then
       ReplaceDialog1Find(nil)      //如果尚未找到特定字符串,则查找
    else
      begin
        StartPos :=RichEdit1.SelStart+length(ReplaceDialog1.ReplaceText)-RichEdit1.SelLength+1;
        RichEdit1.SelText :=  ReplaceDialog1.ReplaceText;
        ToEnd := Length(RichEdit1.Text) - StartPos;

        FoundAt := RichEdit1.FindText(ReplaceDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
        //如果已找到特定字符串,则进行如下处理
        if FoundAt <> -1 then
            begin
              RichEdit1.SetFocus;
              RichEdit1.SelStart := FoundAt;
              RichEdit1.SelLength := Length(ReplaceDialog1.FindText);
            end
        else
          //如果未找到特定字符串,则进行如下处理
          if (MessageDlg('已搜索到文档尽头,未发现要替换的字符串,是否从头搜索?',
             mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
            RichEdit1.SelLength :=0;
      end  ;
end;

end.



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -