可能小弟的问题很菜!(100分)

  • 主题发起人 主题发起人 hdx
  • 开始时间 开始时间
H

hdx

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟初学DELPHI,碰到几个小问题,请大侠伸手,并
且不要觉得可笑!

1。对象是类的一个实例,且在内存中分配有一个区域,那么类
在内存中也有分配一个区域吗?
2。’对象是类的一个实例‘这话能否给个形象的解释?
3。procedure ButtonClick(sender:TObject);
begin
。。。。
end;
调用它时可以写
1》ButtonClick(sender);
2》ButtonClick(Self);
3》ButtonClick(某一按钮);
这三个调用中第一 ,二个怎么解释?特别是第一个,怎
么能把参数名直接写进来?

可能小弟的问题很菜,让各位大虾笑掉虾须了?
 
2.譬如你上学时的书本就是一个类,当你学完该专业应用到实际工作中时,你必定使用这个课本
上的一些理论和方法等,这就是课本的一个实例!
3.论坛上有介绍
 
我也很菜,我要听听!
 
1)其实类和对象的关系跟记录类型与记录变量的关系差不多。类只是一个声明,告诉
系统在给对象分配内存时该怎样分配。真正分配到内存的是对象的实例。当然类的信息必然
也存放在内存中的某处,但由系统自动管理,我们就不用管它了。

2)同上,比如一个TButton类,你可以创建它许多实例Button1,Button2.....。在使用时,
只能引用一个特定实例的方法,属性等,比如Button1.Caption,而不能写为
TButton.Caption。也就是说,可以把类看成一个声明,一个概念上的东西。而对象,则是
实实在在的,可以操作的东西。

3)Sender是用来传递当前触发这个事件的控件的参数。一般不用指定,默认就是Sender,
即当前触发事件的控件。而Self是指当前的Form。人工指定非Sender的参数会对事件处理
程序造成误导。建议不要用。
 
1. 广义的讲, 是. (其实在代码段中和RTTI表里).
2. "你现在所穿的皮鞋"是"你买的皮鞋"这个类的实例
3. 1. 一般用在某个带Sender参数的自过程中
2. self就是当前类的实例, 在普通程序设计时一般就是你的form
3. 还用说吗?
 
>>"你现在所穿的皮鞋"是"你买的皮鞋"这个类的实例
真是比喻的妙极了!佩服!
 
似乎有点不恰当呢,“你买的皮鞋”只能说是很多实例的集合,而不能说是类。打个比喻,
假如有一天我叫你把所有“你买的皮鞋”装箱,这虽然困难,但是有可能做到的。而类
(比如说:“鞋”)是不能进行这样具体的操作的,你不能把所有的“鞋”装箱,而只能
具体到某一些或某一只的鞋的“实例”。
 
谢谢各位大虾答疑,小弟看很多API函数具体
调用时直接就用到它定义时的参数名,原理应
该同调用ButtonClick(sender)是一样的了。是吗?

TO:AANOTHER-EYES大侠:
‘我现在所穿的皮鞋’是’我买的皮鞋‘这个类的实例。
可我现在所穿的皮鞋不是我买的皮鞋,是老婆送我的。
(开个玩笑)!小弟看大富翁离线游览 ,听你说过有做过
打印增值税发票,能否让小弟取取经,或指点小弟到哪里寻找,
小弟曾贴过一贴子,大侠除道声“在这”外,便飘然而去,让人
望背影空叹!

TO:kidneyball
您象个老师,耐心而详细,佩服!
 
第三个问题:
buttonclick只是一个过程,并不是某个对象的方法。
如果你将该过程指定给某个对象的方法时(比如button1的onclick方法),那么你点击button1
时就会调用该过程(tobject sender是为了方便过程的重用。用来指明当前调用该过程的对象
是谁,不管你设定为什么值都会正常运行。但是如果你在该过程中通过确定调用该过程的对象
来执行相应的程序段的话就必须注意该值的设置。)
假设你有两个按钮(button1,button2),其onclick事件都与buttonclick关联,则按下button1
时Sender=button1,按下button2时Sender=button2,如果在程序中调用buttonclick(button1)
则可以模拟你点击button1时应该执行的动作...
 
作对象,类检索一下,我以前答过类似的问题,不想再打字了.
 
多人接受答案了。
 
后退
顶部