请教变量问题
本帖最后由 haiou327 于 2013-02-22 14:17:18 编辑
var
AProgressBar:TProgressBar;
begin
AProgressBar?:=?TProgressBar.Create(self);????
????with?AProgressBar?do??
????begin??
??????Name?:=?'Progress';??
??????Parent?:=?from1;??
??????Max?:=?Form1.Tag;
??????Step?:=?1;??
??????Top?:=?95;??
??????Left?:=?8;??
??????Width?:=?Form1.ClientWidth?-?16;??
????end;
end;
{----------------------------}
//Proc1
var
aPB:TProgressBar;
begin
aPB := TProgressBar(FindComponent('Progress'));
if aPB.Position >= aPB.Max then
ModalResult := mrNo
else
aPB.StepIt;
end;
{****************************************************************}
//Proc2
begin
if AProgressBar.Position >=AProgressBar.Max then
ModalResult:=mrNo
else
AProgressBar.StepIt;
end;
Proc1中多声明一个aPB变量指针指向AProgressBar
直接操作AProgressBar用Proc2不是更直接明了,有区别吗
[解决办法]
简单的应用场景:
在form中动态创建N个Button.
-----------------------------
不能定一堆全局变量吧!
用其它容器存放变量? 那就和form的Components属性重复了!
另:
创建控件拥有者不为nil时, 这个控件的生命周期就有拥有者接管了, 不需要特殊处理
[解决办法]
这种控件的Create内存是分配在堆区,理论上是要程式自己控制释放的,若程序员不释放,程序结束时可能由OS回收。