自定义控件属性的调用问题???(100分)

  • 主题发起人 主题发起人 木木鱼2400
  • 开始时间 开始时间

木木鱼2400

Unregistered / Unconfirmed
GUEST, unregistred user!
我写的一个控件,有2个属性A、B,如下:
published
property A: Boolean read FA write SetA;
property B: string read FB write SetB;

其中SetA中用到属性B,且B不能为空,如下:
procedure SetA(Value: Boolean)
begin
if FA<>Value then
case Value of
True : begin
use B 处理...
end;
False: begin
...
end;
end;
FA:=Value;
end;


在窗体上放置该控件,设置B的内容,然后置A=True;但是在运行程序的时候,提示B为空(在SetA中出错),
我跟踪了一下,在控件中先执行SetA,然后才执行SetB,所以出错了。
假如我把属性A的名字改为C,那么程序就会先执行SetB,这样便不会报错了。
另外,在程序中动态给属性B赋值,然后设置属性A=True,也不会报错。

类似于ADO控件的Active和ConnectionString属性,但是我的控件会报错。
 
是这样的,在构建组件Create时(构建过程中),要去设置属性的。所以你要注意回避。
 
改成下面的代码试试看:
published
property B: string read FB write SetB;
property A: Boolean read FA write SetA;
 
接受答案了.
 
同一楼上的
 
后退
顶部