Sender--意义:指本对象。Sender在什么对象相关代码里,那么Sender就是什么。
Self--意义:指本类,也就是Self被引用的类。Form1内的所有对象都是Form1的类成员,所以他们的self都是Form1。
Owner--意义:指对象的所有者,在Form1内的所有对象的所有者都是Form1。
Parent--意义:指构件的包容器,此对象包括在哪个对象那里?书上和网上的描述我是明白,但是例如:
一个窗体内有一个Button1,我们要在Button1的OnClick中得到Form1的Caption
此时:
Button1 的 Sender、self、Owner、Parent 都是 Form1,其中,self可以直接这样引用:ShowMessage(Self.Caption); //相当于Form1.Caption而Sender、Owner、Parent却要这样引用:ShowMessage(TButton(Sender).Caption) //同样是相当于Form1.Caption这就证明了 Self 和 Sender、Owner、Parent 这三者性质是不同的。
我想知道的是,他们到底都是一个什么类型的东西(对象?类?属性?变量?)
Self--意义:指本类,也就是Self被引用的类。Form1内的所有对象都是Form1的类成员,所以他们的self都是Form1。
Owner--意义:指对象的所有者,在Form1内的所有对象的所有者都是Form1。
Parent--意义:指构件的包容器,此对象包括在哪个对象那里?书上和网上的描述我是明白,但是例如:
一个窗体内有一个Button1,我们要在Button1的OnClick中得到Form1的Caption
此时:
Button1 的 Sender、self、Owner、Parent 都是 Form1,其中,self可以直接这样引用:ShowMessage(Self.Caption); //相当于Form1.Caption而Sender、Owner、Parent却要这样引用:ShowMessage(TButton(Sender).Caption) //同样是相当于Form1.Caption这就证明了 Self 和 Sender、Owner、Parent 这三者性质是不同的。
我想知道的是,他们到底都是一个什么类型的东西(对象?类?属性?变量?)
解决方案 »
- combobox变化的问题
- 怎么给分啊?
- 怎样监控:建立文件(夹)、哪个程序建立的、怎样禁止不让建立文件夹?
- 从OleContainer读取图片到image上上的问题
- 我用delphi编了一个小程序 编译没有错误 可是...
- 操作注册表问题?
- 如何提取当前系统时间(年月日时分秒)
- =====给我一份工作吧,我快要没钱吃饭了!====
- 如何根据登陆用户名来判断用户的权限?
- 如何通过编程实现多个TmaskEdit控件的Onchange事件共享一个Procedure?
- Win7 PostMessage(THandle,WM_CHAR,13,0);
- 求C++转delphi代码!共200分!(OpenSSL RSA)
self是本对象
owner指拥有者。owner销毁时会自动销毁它拥有的组件。
窗体里的对象的拥有者未必都是该窗体。
parent的说法正确。
为何Self可以直接Self.Name这种方式引用,而Sender就得TButton(Sender).Name?它们在实质上有什么区别(这里的区别不是指它们是指向哪一个对象)重新逐个试了一下,发现我有两个地方是描述错误的.
1、在Button1的OnClick里,Sender指的就是Button1而非Form1.
2、只有Sender可以用TButton(Sender).Caption这种方法来调用,而Owner和Parent不行,会出错。
那就引发了新的问题:
如何引用Owner和Parent?例如,Button1的Owner和Parent都是Form1,我要用引用方式获得Form1.Name并且用ShowMessage显示出来。
self可以直接用Self.caption的方式来引用Form1.caption,
那Owner为什么就不行?