[Error] Unit1.pas(43): Undeclared identifier: 'replacedialog1Find';
为什么错误老在这一句呢,replacedialog1find(sender)这个sender到底是什么意思
unit bb;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;type
TForm1 = class(TForm)
RichEdit1: TRichEdit;
Button1: TButton;
ReplaceDialog1: TReplaceDialog;
procedure Button1Click(Sender: TObject);
procedure ReplaceDialog1Replace(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
replacedialog1.Execute ;
end;procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
var ii:integer;
begin
ii:=0;
if frreplaceall in replacedialog1.Options then
begin
ii:=0;
while ii<richedit1.Lines.count do
begin
replacedialog1Find(sender);
if richedit1.SelText <>'' then
richedit1.SelText :=replacedialog1.ReplaceText ;
end
end
else
begin
replacedilaog1find(sender);
if richedit1.SelText <>'' then
richedit1.SelText :=replacedialog1.ReplaceText ;
end
end;end;end.
为什么错误老在这一句呢,replacedialog1find(sender)这个sender到底是什么意思
unit bb;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;type
TForm1 = class(TForm)
RichEdit1: TRichEdit;
Button1: TButton;
ReplaceDialog1: TReplaceDialog;
procedure Button1Click(Sender: TObject);
procedure ReplaceDialog1Replace(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
replacedialog1.Execute ;
end;procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
var ii:integer;
begin
ii:=0;
if frreplaceall in replacedialog1.Options then
begin
ii:=0;
while ii<richedit1.Lines.count do
begin
replacedialog1Find(sender);
if richedit1.SelText <>'' then
richedit1.SelText :=replacedialog1.ReplaceText ;
end
end
else
begin
replacedilaog1find(sender);
if richedit1.SelText <>'' then
richedit1.SelText :=replacedialog1.ReplaceText ;
end
end;end;end.
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;type
TForm1 = class(TForm)
RichEdit1: TRichEdit;
Button1: TButton;
ReplaceDialog1: TReplaceDialog;
procedure Button1Click(Sender: TObject);
procedure ReplaceDialog1Replace(Sender: TObject);
procedure ReplaceDialog1Find(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
replacedialog1.Execute ;
end;procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
var ii:integer;
begin
ii:=0;
if frreplaceall in replacedialog1.Options then
begin
ii:=0;
while ii<richedit1.Lines.count do
begin
replacedialog1Find(sender);
if richedit1.SelText <>'' then
richedit1.SelText :=replacedialog1.ReplaceText ;
end
end
else
begin
replacedialog1find(sender);
if richedit1.SelText <>'' then
richedit1.SelText :=replacedialog1.ReplaceText ;
end
end;procedure TForm1.ReplaceDialog1Find(Sender: TObject);
begin
;
end;end.
你时控件ReplaceDialog1 的find方法没有写.
是没定义'replacedialog1Find'所在的单元。你要引用这个单元。sender 简单的说就是 对象本身。
你这个函数在哪里声明的呢?我好象在你的unit中并没有找到这个函数啊?
要不就是他在哪个Unit中声明的?如果是的话,请在uses中增加该 Unit.
另外,Sender这个参数很有用的,比如,你界面上有三个button,然后,他们的Tag属性依次是1,2,3,然后,你在Button1上写了一个onclick,即双击onclick,产生的事件.在该事件中可以这么写:
begin
if (Sender is TButton) then
case (Sender as TButton).Tag of
1: showmessage('You click button1')
2: showmessage('You click button2')
3: showmessage('You click button3')
end;
end;
然后将Button2和Button3的OnClick设置成为Button1Click(不是产生新事件,而是使用选择的功能).这样,三个Button就可以使用一个程序来完成click功能了,分辨他们的恰好是Sender,就是说一般情况下Sender就是产生事件的控件本身.
这样就可以写以下代码了:
在加一个Button4,然后产生新的onclick事件,在Button4OnClick中这么写:
begin
Button1Click(Button3)
end;
那么会显示什么呢?
Button1Click(Button3)是方法的调用所以一定是'You click button3'