询问控件属性的赋值顺序如何设定?(300分)

  • 主题发起人 萧月禾
  • 开始时间
萧月禾,基本已经隐居了,怎么从那里跑出来了
 
// 在SetA1的过程中,要执行一个函数,该函数中使用到A2、A3的值
呵呵,一个简单的方法,创建的时候给它们赋初值,一个用户不可能赋的值。
那么在 SetA1 里面判断,如果 A2 A3 的值是那个初值,则 raise

// 控件的属性能否是一个Form?
可以
// 把属性的类型定义成TForm,但每个Form都是从TForm继承下来的子类
这才对啦,要不然你的 Form1 永远不能被选为其值。

 
到这里我想老萧你也应该知道怎么处理你的属性了吧,对了重载Loaded方法,象TQuery那样处理,就不用考虑先后顺序了.

至于属性为TForm类的问题,
>>>另外再问一个问题: 控件的属性能否是一个Form?

这是没有问题,所需要注意的事和属性是其他类所需要注意的事没什么两样,在属性的写接口中调用这个TForm类实例的
FreeNotification方法注册通知.

>>>在属性面版上,可选择一个Form给它赋值

不过这个就不行了,在Delphi中类属性编辑器所能列出的设计其类实例必须是一个Form中的类,而不能是Form本身.
所以这样的属性你可以通过输入Form名来给它赋值,而不能象其他类一样来选取.

>>>把属性的类型定义成TForm,但每个Form都是从TForm继承下来的子类
>>>把类型定义成 class of TForm , 结果在属性面版上连这个属性都不出现了

Class of TForm其实是一种TClass,TClass类的属性是不可以在设计期出现的属性面板上的.
 
多谢aizb指点[:)]

另外,谁说我隐居了,不过最近少在江湖走动罢了[:D]
 
多人接受答案了。
 
顶部