菜鸟捉虫(36)

Author: Date: 2001年 36期

#1?牐犐掀谡反鸢福?
  ?牐犜贒LL代码中,很明显的一个错误就是没有exports段将ShowAboutForm函数输出。这样主程序将无法使用这个函数。另外,如果用AboutForm.Show则会看不到窗体,因为它刚一显示出来就被Free掉。另外,因为Show所显示的窗体不是无模式窗体,使用ShowModal显示窗体后,窗体在没有关闭时将不会被Free掉。
  #1?牐牷窠泵ィ?
  ?牐犃赡?  吴  新 山东  张  鹏
  ?牐犓拇?  彭宇正 湖南  丁  益
  ?牐牴愣?  刘远毅
  ?牐犚陨闲以硕琳呓竦玫缒员ㄗ钚鲁銎返摹兜缒员ㄏ盗信涮坠馀獭吩又疽惶住?
  #1?牐牨酒谔饽浚?
  ?牐牨酒诘奶饽恳笪颐嵌唇?6个按钮,并在单击某个按钮显示出所单击按钮的Caption值。下面的程序代码就是实现这个功能的,但是存在一些错误,请将这些错误找出来:
  ?牐牎?
  ?牐爑ses
  ?牐燱indows, Messages, SysUtils, Classes, Graphics, Controls,Forms, Dialogs;
  ?牐爐ype
  ?牐牎?
  ?牐爌rivate
  ?牐爌rocedure DoClick(Sender:TObject);?牔?
  ?牐爒ar
  ?牐燜orm1:TForm1;
  ?牐爒Btn:Array[0..5]?爋f TButton;
  ?牐燬trLst:TStringList;
  ?牐牎?
  ?牐爌rocedure TForm1.DoClick(Sender:TObject);
  ?牐?//响应单击事件
  ?牐爒ar
  ?牐爄:integer??
  ?牐燽egin
  ?牐爁or i:=0 to 5 do
  ?牐燽egin
  ?牐爄f Sender:= vBtn[i] then
  ?牐燬howMessage('你单击的按钮是:' + vBtn[i].Caption);
  ?牐爀nd;
  ?牐爀nd;
  ?牐爌rocedure TForm1.FormCreate(Sender:TObject);
  ?牐爒ar
  ?牐爄,vHeight:integer??
  ?牐燽egin
  ?牐燬trLst:=TStringList.Create;
  ?牐燬trLst.Add('VB');??
  ?牐燬trLst.Add('VC');??
  ?牐燬trLst.Add('Delphi);??
  ?牐燬trLst.Add('Java);
  ?牐燬trLst.Add('C#');
  ?牐燬trLst.Add('ASP.NET');
  ?牐爒Height:=50;
  ?牐爁or i:=0 to 5 do
  ?牐燽egin
  ?牐爒Btn[i]:=TButton.Create(Form1);//创建按钮
  ?牐爒Btn[i].Caption:=StrLst.Strings[i];??
  ?牐爒Btn[i].Left:=0??
  ?牐爄f i=0 then
  ?牐爒Btn[i].Top:=0
  ?牐爀lse
  ?牐爒Btn[i].Top:=vBtn[i-1].Top + vHeight;
  ?牐爒Btn[i].Width:=200;
  ?牐爒Btn[i].Height:=vHeight;
  ?牐爒Btn[i].OnClick:=DoClick;
  ?牐爀nd;
  ?牐爀nd;
  ?牐爌rocedure TForm1.FormDestroy(Sender:TObject);
  ?牐爒ar
  ?牐爄:integer??
  ?牐燽egin
  ?牐?//释放资源
  ?牐燬trLst.Free??
  ?牐爁or i:=0 to 5 do
  ?牐爒Btn[i].Free??
  ?牐爀nd;
  ?牐爀nd