请教属性,方法,事件,sender,Tobject,self的具体解释。 本人刚学delphi不久,在一些书上经常看到属性,方法,事件,sender,Tobject,self这几个词,书中也有解释,但往往不全面而理解得不是很深入。所以请教各位属性,方法,事件,sender,Tobject,self的具体解释。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 马上准备睡觉了,看到这个帖子。过来写几句,抛块砖引个玉。希望楼上继续。【方法】 属于一个对象的过程或者函数名。在C++中,被称为成员函数 例如,TControl类的GetText就是一个方法,你可以在controls.pas单元的第3798行看到它的实现过程。function TControl.GetText: TCaption;var Len: Integer;begin Len := GetTextLen; SetString(Result, PChar(nil), Len); if Len <> 0 then GetTextBuf(Pointer(Result), Len + 1);end;------------------------------------------【属性】 外部代码访问对象中数据以及代码的访问器,它隐藏了具体实现的细节。 例如,TControl类中的Caption就是一个属性,说tControl有点远,最简单的理解就是你通常使用Tlabel类(标签组件)中就有这个东西。在controls.pas单元的第854行你可以看到如下定义property Caption: TCaption read GetText write SetText stored IsCaptionStored;你会发现Caption属性中的 read gettext以及write setText。从字面很容易理解,当你调用Caption属性并读取它的内容时,你便是通过这个访问器,通过这个指针调用了GetText方法。仔细观察Controls.pas单元中TControl的定义,你会发现,getText是一个private的方法,也就是说,外部代码无法对它直接访问,它最大限度的隐藏了实现的细节。而你访问它的形式则是通过写在protected中Caption属性来完成的,写在proteceted意味着可以被他的派生类访问,所以在Tlabel中,你可以使用caption属性来完成对标题信息的读写。简单的说,一般大多数方法都是私有的,是最大限度隐藏了实现细节的,而属性则是外部代码可以访问的,非私有的。至于为什么这么做,就需要你在以后的学习中逐渐理解了。------------------------------------------【事件】 VCL事件系统封装了许多WINDOWS的消息,许多VCL的事件都对应一个WM_***的WINDOWS消息,事件的处理是无约定的,从这个意义上说,使用事件比直接使用消息要方便一些。 通常我们使用BUTTON组件,使用他的onClick事件,他的代码是在你点击按钮之后执行的。onClick就是一个事件。关产它的定义(Controls.pas单元中的873行)property OnClick: TNotifyEvent read FOnClick write FOnClick stored IsOnClickStored;你会发现,它也是一个属性,也会发现它的类型是TNotifyEvent 。好了,不多说了,顺藤摸瓜,自己再往下继续研究研究吧。睡觉去了。 Tobject : 如VC中Cobject, 是Delphi的总基类,所有的类都是从它最基本的继承过来的Sender & Self 使用就比较相对一些,怕解释有误,等下面的细说 我的愚见: Sender 在事件处理程序参数表中,参数Sender代表触发事件处理程序的组件. Self 引用方法调用所在的对象 TObject是Delphi中所有类的根基类,当然也包括自已定义的类不过在定义类时,TObject可以省略,如TMyObject = class ...end;等同于TMyObject = class(TObject) ...end; ,方法,事件,sender,Tobject,self你是一个人类(Tobject),你有你自己的性别,年龄,身高等(属性),你也会攀爬蹬走(方法),你也有你的情绪,思想,当别人说你好的时候你很高兴,说你坏时你会很沮丧(事件),有一天你自己(self)听到别人(sender)说你的女朋友好漂亮传给你的思想(事件),这时你会非常不高兴(事件处理外界的响应) ghyghost的比喻有意思!果然精辟!老石头果然高!!~~~CSDN论坛浏览器:浏览、发帖、回复、结贴自动平均给分,下载地址:http://CoolSlob.ys168.com 《ObjectPascal语法中文手册》不错 在controls.pas单元的第3798行 上面的单元在什么地方打开啊 初学 QQ 大家来找茬 辅助工具 ADO数据库编程中,TADOQuery中并没有MasterSource可选为主从表,那么,我们应该怎么实现主从表的操作呢? 图表输出、报表 TObject如何进行保存和读取 不知道是不是FastReport3.0的Bug?还是我弄错了?大家看看怎回事? delphi中有没有延时的函数? message handle 菜鸟问题,各位大虾帮帮忙,多谢了 师姐,来分了哦。 我发现Timer不如想象的那样? 再问三级跳问题 急: delphi的打印问题
希望楼上继续。【方法】 属于一个对象的过程或者函数名。在C++中,被称为成员函数
例如,TControl类的GetText就是一个方法,你可以在controls.pas单元的第3798行看到它的实现过程。
function TControl.GetText: TCaption;
var
Len: Integer;
begin
Len := GetTextLen;
SetString(Result, PChar(nil), Len);
if Len <> 0 then GetTextBuf(Pointer(Result), Len + 1);
end;
------------------------------------------
【属性】 外部代码访问对象中数据以及代码的访问器,它隐藏了具体实现的细节。
例如,TControl类中的Caption就是一个属性,说tControl有点远,最简单的理解就是你通常使用Tlabel类(标签组件)中就有这个东西。在controls.pas单元的第854行你可以看到如下定义property Caption: TCaption read GetText write SetText stored IsCaptionStored;你会发现Caption属性中的 read gettext以及write setText。从字面很容易理解,当你调用Caption属性并读取它的内容时,你便是通过这个访问器,通过这个指针调用了GetText方法。
仔细观察Controls.pas单元中TControl的定义,你会发现,getText是一个private的方法,也就是说,外部代码无法对它直接访问,它最大限度的隐藏了实现的细节。而你访问它的形式则是通过写在protected中Caption属性来完成的,写在proteceted意味着可以被他的派生类访问,所以在Tlabel中,你可以使用caption属性来完成对标题信息的读写。简单的说,一般大多数方法都是私有的,是最大限度隐藏了实现细节的,而属性则是外部代码可以访问的,非私有的。至于为什么这么做,就需要你在以后的学习中逐渐理解了。
------------------------------------------
【事件】 VCL事件系统封装了许多WINDOWS的消息,许多VCL的事件都对应一个WM_***的WINDOWS消息,事件的处理是无约定的,从这个意义上说,使用事件比直接使用消息要方便一些。
通常我们使用BUTTON组件,使用他的onClick事件,他的代码是在你点击按钮之后执行的。onClick就是一个事件。关产它的定义(Controls.pas单元中的873行)
property OnClick: TNotifyEvent read FOnClick write FOnClick stored IsOnClickStored;
你会发现,它也是一个属性,也会发现它的类型是TNotifyEvent 。好了,不多说了,顺藤摸瓜,自己再往下继续研究研究吧。睡觉去了。
Sender 在事件处理程序参数表中,参数Sender代表触发事件处理程序的组件.
Self 引用方法调用所在的对象
不过在定义类时,TObject可以省略,如
TMyObject = class
...
end;
等同于
TMyObject = class(TObject)
...
end;
果然精辟!老石头果然高!!~~~CSDN论坛浏览器:浏览、发帖、回复、结贴自动平均给分,下载地址:http://CoolSlob.ys168.com