菜鸟捉虫(4)
软件世界
上期正确答案:
上期中只有一个错误。将Node:=TreeView1.Items.AddChild(Node,tmpStr)改成TreeView1.Items.AddChild(Node,tmpStr);即可正常显示。
获奖名单:
山东 杨方朋
北京 宋康
广东 李晓勇
重庆 秦斌
天津 顾丽丽
以上获奖读者将获得电脑报最新出品的电脑报系列配套光盘杂志一套。
本期题目:
下面的程序代码,实现了在一幅图片中创建多个按钮的功能。点击其中任何一个按钮都能将所有的按钮释放掉。但是在释放的时候程序会出现错误,请修改程序,避免发生错误。
其中,按钮的位置大小及个数都保存在Btn.txt文件中,文件的第一行为按钮的个数。
源码如下:
...
var
Btn: Array of TImage;
fButtonCount: Integer;
implementation
procedure TForm1.CreateButtons//创建按钮过程
var
Text: TextFile;
szBrf: String;
i: Integer;
begin
try
AssignFile(Text,'btn.txt');//打开按钮文件
Reset(Text);
Readln(Text,szBrf);//读取第一行,获得按钮个数
fButtonCount:=StrToInt(szBrf);
SetLength(Btn,fButtonCount);
i:=0;
while not eof(Text) do
begin
Readln(Text,szBrf);//此行用于创建一个按钮
Btn:=TImage.Create(Self);
Btn.Button.Parent:=fParent;
with Btn[i].Button do
begin
Cursor:=crHandPoint;
OnClick:=BtnOnClick;
Readln(Text,szBrf); //Left
Left:=StrToInt(szBrf);
Readln(Text,szBrf); //Top
Top:=StrToInt(szBrf);
Readln(Text,szBrf); //Width
Width:=StrToInt(szBrf);
Readln(Text,szBrf); //Height
Height:=StrToInt(szBrf);
Tag:=i;
end;
Inc(i);
end;
finally
CloseFile(Text);
end;
end;
procedure TForm1.FreeResource; //释放按钮
var
i: Integer;
begin
for i:=0 to fButtonCount -1 do
begin
if Assigned(Btn) then
begin
Btn.Free;
Btn:=nil;
end;
end;
fButtonCount"=0;
end;
procedure TForm1.BtnOnClick(Sender: TObject); //响应按钮的单击事件
begin
FreeResource;
end;