sender与self

zxd_510214 2001-04-04 03:19:00
我想问一下sender与self的区别与联系?请那位高手指点指点。
...全文
75 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
saoren 2001-04-05
  • 打赏
  • 举报
回复
错了
那在以“TForm1.”中用到的过程和函数中,Self意指TForm
saoren 2001-04-04
  • 打赏
  • 举报
回复
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;
我真的是大海 2001-04-04
  • 打赏
  • 举报
回复
如TForm1.button1Click(Sender:TObject);
Self即Form1,而Sender即接受单击消息的组件,一般是Button1,
如果你写:
Button2.OnClick:=button1click;
则Sender有可能是Button2了
Kingron 2001-04-04
  • 打赏
  • 举报
回复
self指代对象本身,相当于C++中的this指针?
sender表示发送命令或者消息的对象实体。
还请其他的高手指教。

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧