控件的Run-time 和Design-time的区别(50分)

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

hongsen

Unregistered / Unconfirmed
GUEST, unregistred user!
今天忽然有了这种想法:
为什么控件的属性在Design-time 时可以赋值,在Run-time 时则不行。
事件处理则相反。那么Run-time 时出现的property page 和Design-time时
出现的属性编辑器有什么不同?
另外,我在VC中写了个控件, 为什么自定义的事件不能在DELPHI的
OJBECT INSPECTOR中显示出来,属性也没有融合进OJBECT INSPECTOR中,而
是在编辑时在右键弹出菜单中弹出的对话框中出现。
 
什么叫控件的属性在Design-time 时可以赋值,在Run-time 时则不行?
为什么事件处理则相反? Run-time 时出现的property page又是什么啊?
我怎么看不明白.
VC中写的控件装Delphi中,有问题是可以理解的吧.
 
控件属性能在design-time时能赋值的在run-time时也能行.
不行的原因:
1. 该控件中设置了判断,只有在design-time赋的值才接受(if csDesigning in ComponentState then ....).
2. 该属性的类型只有定义该控件的unit中看得见, 你的程序看不到(该类型没有定义在interface部分,
而是定义在implimentation里).

事件在design-time时也能赋值(把procedure的名字输入进去就行了, 只要参数表相同).
 
感谢两位的解答。 我再解释一下我的问题:
我的意思是部件在设计时能够从object inspector 的列表中容易地赋值,而在
运行时却要用代码进行编写,如:component1.attribute:=somevalue;这样的写。
当然在运行时也可以通过对话框等来进行用户输入,但这个输入界面是我们在设计时
所使用的界面吗?属性页能否在编辑状态和运行状态都同样使用?


BTW:我对属性页的使用不熟,如果问题太幼稚,望别见笑。
 
属性页?
你说的是ActiveX Control吗?
 
对属性赋值设计时和运行时底层一样. 上层不一样. 设计时是有object inspector提供了一个
输入界面, 你往object inspector里写入, object inspector再往component里写入.
运行时你是直接往component里写的.
 
幼稚?

>感谢两位的解答。 我再解释一下我的问题:
> 我的意思是部件在设计时能够从object inspector 的列表中容易地赋值,而在
>运行时却要用代码进行编写,如:component1.attribute:=somevalue;这样的写。
>当然在运行时也可以通过对话框等来进行用户输入,但这个输入界面是我们在设计时
>所使用的界面吗?属性页能否在编辑状态和运行状态都同样使用?


>BTW:我对属性页的使用不熟,如果问题太幼稚,望别见笑
 
什么幼稚,当然可以了,你看看DELPHI高级编程指南,里面有一个运行时
修改控件的属性,有类似OBJECT INSPECTOR的界面,除了对过程的处理
不能修改,其他属性都可以,主要是通过RTTF,我做了一个控件,挺好的。
 
sherman能不能把你的控件发给我,我想看一看.

E-mail: YuanLiang@263.net
 
SeaSky , 你是说ActiveX Control的属性页能够在设计和运行时都可见吗?
如果可以,那么一般的部件呢,譬如说在VC++环境中开发一个部件并在VC++环境
中使用。
 
:yuanliang 收到了没有
 
hongsen :
我想你的问题是不明白属性页的作用,这是Delphi可视化设计的一部分,同VC++不
同,在VC++中,你无法对构件的属性进行“所见即所得”式的修改,但Delphi中提
供了属性页(这点同VB一样),你可以在属性页中即时的修改属性的值,而该值就
相当于该属性的初始值,它被存储在构件中(由Delphi系统自动完成)。当然你也
可以在程序运行当中修改它,这是一样的。不知这样说你明不明白?
 
多人接受答案了。
 
后退
顶部