self指代对象本身,相当于C++中的this指针?
sender表示发送命令或者消息的对象实体。
还请其他的高手指教。
sender表示发送命令或者消息的对象实体。
还请其他的高手指教。
解决方案 »
- inno setup 制作安装包 怎么修改bat文件?
- 搞图形图像的delphi程序来看看
- Delphi 添加服务启动
- 求学习建议
- delphi开发中如何真正应用面向对象,双击控件添加几行事件代码,好象离面向对象还有距离。
- 现在有一个父窗口,里面有一个子窗口,我移动子窗口时父窗口出现滚动条。如何设置父窗口不出现滚动条呢?
- 我要实现双面打印
- Delphi下如何判断一个目录是不是存在?
- 高手请入:为什么不能用dbgrid1.column[0].color:=colorcombobox1.color这样来给column控制颜色?
- 如何做远程通讯!
- 关于多线程的问题,我只能给23分.
- 请问如何枚举控制面板中所有的部件!急
Self即Form1,而Sender即接受单击消息的组件,一般是Button1,
如果你写:
Button2.OnClick:=button1click;
则Sender有可能是Button2了
如在
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;
那在以“TForm1.”中用到的过程和函数中,Self意指TForm