首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问变量有关问题

2013-02-27 
请教变量问题本帖最后由 haiou327 于 2013-02-22 14:17:18 编辑varAProgressBar:TProgressBarbeginAProgr

请教变量问题
本帖最后由 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时, 这个控件的生命周期就有拥有者接管了, 不需要特殊处理
[解决办法]
引用:
Delphi/Pascal code?123456789101112131415161718begin  with TButton.Create(self)do    begin      Name:='bt1';      Parent := Self;      Left:=20;      top:=60;      Width:=90;    end;end; v……


这种控件的Create内存是分配在堆区,理论上是要程式自己控制释放的,若程序员不释放,程序结束时可能由OS回收。

热点排行
Bad Request.