木
木木鱼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属性,但是我的控件会报错。
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属性,但是我的控件会报错。