大家帮忙看看,我有两个按钮,每个按钮功能是动态生成了100个SpeedButton,但是在点每个按钮先进行释放,但是不知道为什么总是报内存错误切换两次就自动关闭了,释放的代码如下,请大家指教。//调用
FreeSpeedButton(DDButton,backImg);
DDButton[I]:=TSpeedButton.Create(self);
backImg[I] :=TImage.Create(self);
backImg[I].Parent:=Form1.ScrollBox3;
backImg[I].Picture.LoadFromFile('.\img\new2.JPG');
DDButton[I].Parent:=Form1.ScrollBox3;
DDButton[I].Caption:=StrTmp;
DDButton[I].Width:=iwidth;
backImg[I].Width:=iwidth;
DDButton[I].Height:=iHeight;
backImg[I].Height:=iHeight;
backImg[I].Top := iHtoH + 50 * (I div iPerLine - integer((I mod iPerLine)=0));
backImg[I].Left := iWtoW + (iWidth+iWtoW) * ((I-1) mod iPerLine);
DDButton[I].Top := iHtoH + 50 * (I div iPerLine - integer((I mod iPerLine)=0));
DDButton[I].Left := iWtoW + (iWidth+iWtoW) * ((I-1) mod iPerLine);
DDButton[I].Font.Color:=clYellow;
DDButton[I].Flat:=true;
backImg[I].Show;
DDButton[I].Show;
//释放
procedure FreeSpeedButton(TmpBtn : array of TSpeedButton;TmpImg : array of TImage);
var
i : integer;
begin
for i:=1 to 100 do
begin
if TmpBtn[i]<>nil then
begin
try
TmpBtn[i].Destroy;
TmpImg[I].Destroy;
except
break;
end;
end
else
begin
break;
end;
end;
end;
FreeSpeedButton(DDButton,backImg);
DDButton[I]:=TSpeedButton.Create(self);
backImg[I] :=TImage.Create(self);
backImg[I].Parent:=Form1.ScrollBox3;
backImg[I].Picture.LoadFromFile('.\img\new2.JPG');
DDButton[I].Parent:=Form1.ScrollBox3;
DDButton[I].Caption:=StrTmp;
DDButton[I].Width:=iwidth;
backImg[I].Width:=iwidth;
DDButton[I].Height:=iHeight;
backImg[I].Height:=iHeight;
backImg[I].Top := iHtoH + 50 * (I div iPerLine - integer((I mod iPerLine)=0));
backImg[I].Left := iWtoW + (iWidth+iWtoW) * ((I-1) mod iPerLine);
DDButton[I].Top := iHtoH + 50 * (I div iPerLine - integer((I mod iPerLine)=0));
DDButton[I].Left := iWtoW + (iWidth+iWtoW) * ((I-1) mod iPerLine);
DDButton[I].Font.Color:=clYellow;
DDButton[I].Flat:=true;
backImg[I].Show;
DDButton[I].Show;
//释放
procedure FreeSpeedButton(TmpBtn : array of TSpeedButton;TmpImg : array of TImage);
var
i : integer;
begin
for i:=1 to 100 do
begin
if TmpBtn[i]<>nil then
begin
try
TmpBtn[i].Destroy;
TmpImg[I].Destroy;
except
break;
end;
end
else
begin
break;
end;
end;
end;
解决方案 »
- 求助C++Builder 翻译成Delphi
- delphi与java通过socket通讯
- 请推荐一款比较好的报表控件!
- 高分求救!如何获取局域网内一个工作组所有的IP和主机名,并。。。
- CORBA程序问题,高分相送!
- mysql+ado+delphi 原本在库中查出来的负数在DBGrid 中却永远是正的,请帮帮忙!
- windows的资源管理器怎么做的?
- 帮忙,在GRID做了这计算字段,但计算不准确的,为什么,时间紧逼,帮帮忙
- 快要成为小虾的我的呼救!!!!
- 贴一个将数字金额转成英文大写金额的函数
- 有懂ServerSocket的高手来看看,像这种,怎么在服务端主动断开其中某个连接或单独给某个连接发消息呢?
- 学习delphi 控件
用 TObjectList
AList:TList;AList:=TObjectList.Create;procedure 创建方法
var
i:Integer;
begin
for i:=0 to 99 do
begin
创建按钮
AList.Add(按钮);
end;
end;AList.Clear;来释放所有的按钮