程序如下,主要是在函数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.
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.
Memo1.SelLength:=l1;
后面加上
memo1.setfocused