程序如下,主要是在函数TForm1.SetSite中:
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls, Menus;type
  TForm1 = class(TForm)
    Panel1: TPanel;
    SpeedButtonNew: TSpeedButton;
    SpeedButtonOpen: TSpeedButton;
    SpeedButtonSave: TSpeedButton;
    SpeedButtonLd: TSpeedButton;
    SpeedButtonRd: TSpeedButton;
    SpeedButtonCd: TSpeedButton;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    New1: TMenuItem;
    Open1: TMenuItem;
    Save1: TMenuItem;
    Saveas1: TMenuItem;
    Exit1: TMenuItem;
    Edit1: TMenuItem;
    Copy1: TMenuItem;
    Cut1: TMenuItem;
    Paste1: TMenuItem;
    Find1: TMenuItem;
    Replace1: TMenuItem;
    Help1: TMenuItem;
    About1: TMenuItem;
    FindDialog1: TFindDialog;
    ReplaceDialog1: TReplaceDialog;
    procedure SpeedButtonNewClick(Sender: TObject);
    procedure Memo1Change(Sender: TObject);
    procedure SpeedButtonOpenClick(Sender: TObject);
    procedure SpeedButtonSaveClick(Sender: TObject);
    procedure SpeedButtonLdClick(Sender: TObject);
    procedure SpeedButtonRdClick(Sender: TObject);
    procedure SpeedButtonCdClick(Sender: TObject);
    procedure About1Click(Sender: TObject);
    procedure Saveas1Click(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure Copy1Click(Sender: TObject);
    procedure Cut1Click(Sender: TObject);
    procedure Paste1Click(Sender: TObject);
    procedure Find1Click(Sender: TObject);
    procedure Replace1Click(Sender: TObject);
    procedure FindDialog1Find(Sender: TObject);
  private
    { Private declarations }
    function SetSite(Dialog:TFindDialog):integer;
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}
var FName:String;function TForm1.SetSite(Dialog:TFindDialog):integer;
var  l1,l2,l3:integer;
begin
with Dialog do
begin
l1:=Length(FindText);
l2:=Length(Memo1.Text);
l3:=Memo1.SelLength;
if frMatchCase in Options then
 result:=Pos(FindText,Copy(Memo1.Text,Memo1.SelStart+l3+1,l2))
else
result:=Pos(UpperCase(FindText),Copy(UpperCase(Memo1.Text),Memo1.SelStart+l3+1,l2));
if result=0 then
MessageDlg(''''+FindText+'''not found.',mtInformation,[mbOK],0)
else begin
Memo1.SelStart:=Memo1.SelStart+l3+result-1;
Memo1.SelLength:=l1;
end;
end;
end;procedure TForm1.Find1Click(Sender: TObject);
begin
Finddialog1.Execute;
end;procedure TForm1.FindDialog1Find(Sender: TObject);
begin
Setsite(FindDialog1);
end;end.