[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.

解决方案 »

  1.   

    sender是消息的发送者 比如:Button,Menu...
      

  2.   

    unit Unit1;
    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.
      

  3.   

    这些控件sender都时没用的吧.!:)
    你时控件ReplaceDialog1 的find方法没有写.
      

  4.   

    //Undeclared identifier: 'replacedialog1Find'
    是没定义'replacedialog1Find'所在的单元。你要引用这个单元。sender 简单的说就是 对象本身。
      

  5.   

    错误的意思是在文件中没有声明replacedialog1Find这个函数,
    你这个函数在哪里声明的呢?我好象在你的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;
    那么会显示什么呢?
      

  6.   

    Button4OnClick是方法指针
    Button1Click(Button3)是方法的调用所以一定是'You click button3'
      

  7.   

    可能是ReplaceDialog1 的find事件声明被你误删了吧