self指代对象本身,相当于C++中的this指针?
sender表示发送命令或者消息的对象实体。
还请其他的高手指教。

解决方案 »

  1.   

    如TForm1.button1Click(Sender:TObject);
    Self即Form1,而Sender即接受单击消息的组件,一般是Button1,
    如果你写:
      Button2.OnClick:=button1click;
    则Sender有可能是Button2了
      

  2.   

    Self是意指本实例类
    如在
    type 
      TForm1=class(tform)
      published
        procedure buttononcick(Sender: TObject);   
        ...
      end;
    var Form1:TForm1;
      那在以“TForm1.”中用到的过程和函数中,Self意指以TForm1生成的实例,如(Form1)所以在Delphi中并不是Self一定指窗体的,它可以由不同的类有不同的对象。
    如在VCL中TEdit类中某个过程:
    procedure TEdit.DoSomeThing;
    begin
      Self....//那这Self就是指TEdit生出来的实例对象。
    end;
    而Sender 嘛,就是一个TObject对象。因为所以的控件,还有类是从它生出来的,所以所大部分用Self作实参的调用的过程或函数,它的形参都是(Sender:TObject),像我们在各事件中,如果
    有多个事件是共同的,就可以通过强制转换所要的类型,来达来效果。
    procedure TEdit.DoExit;
    begin
      if Assigned(FOnExit) then FOnExit(Self);
    end;
    procedure TForm1.Edit1OnExit(Sender :TObject);//这个Sender 其实就是上面Self传过来的.
    begin
      ShowMessage((Sender as TEdit).Name);//name='Edit1'
    end;
      

  3.   

    错了
    那在以“TForm1.”中用到的过程和函数中,Self意指TForm