控件属性的恢复问题!(20分)

  • 主题发起人 主题发起人 燕岛秋潮
  • 开始时间 开始时间

燕岛秋潮

Unregistered / Unconfirmed
GUEST, unregistred user!
假如现在存在三个控件t1,t2,t3,其中t1,t2的属性设置如下:


type t3 = class
end;
type t2 = class
private
Ft3:t3;
procedure Sett3;
procedure newmethod;
published
T3:t3 read Ft3 write Sett3;
end;
type t1 = class

private
Ft2:t2;
procedure Sett2;
published
T2:t2 read Ft2 write Sett2;

现在在form上放置三个控件t11,t21,t31,然后运行,则控件的published中的T2,T3属性的创建不与控件的创建同时进行,而是在所有的控件创建之后,才调用Sett2,Sett3方法。但这样就产生了一个问题,如果我在Sett2中使用Ft2中的newmethod方法,而newmethod方法中还要使用Ft3,但此时Ft3却还是nil,没有被恢复。

这个问题该如何解决?请指点!谢谢
 
对你的问题提出几点问题:
1、你的三个控件都是从TObject继承下来的,不知道你是怎么做到在设计期间可以使用的,也就是说如何把它注册到控件面板中去的?
2、“在form上放置三个控件t11,t21,t31”:三个控件分别是T1,T2,T3类还是都是T1类?
3、“则控件的published中的T2,T3属性”,哪个控件?Form上的控件所有,还是t11,t21,t31三个都是还是三个中的某一个?
4、“创建不与控件的创建同时进行”:为什么?是你的程序要求还是做不到?
5、“而是在所有的控件创建之后,才调用Sett2,Sett3方法”,是什么意思?
6、“而newmethod方法中还要使用Ft3,但此时Ft3却还是nil”:没有创建的控件当然不能使用,如果你的程序逻辑上需要这样做,说明你的程序逻辑有问题。
7、“没有被恢复”:“恢复”是什么意思?
 
to aizb:
sorry,有些地方没有说清楚.
1.所有的控件都是从Tcomponent继承
2。三个控件分别是T1,T2,T3类
3。published中的T2,T3属性在控件的声明中已经说明
4.假如在控件t2的published中增加一个属性property s1:string read FStr write FStr stored true;
则当控件t2在恢复时,会先恢复属性s1,而属性T3则是在t11,t21,t31全部create之后,才会调用Sett3.


这样说吧,如果是自定义控件的published属性,在恢复时是所有控件create之后,才会调用set方法进行赋值。


 
后退
顶部