菜鸟捉虫(43)

上期正确答案:
   引起错误的主要原因是没有正确检查变量值,VB的自动类型转换造成了麻烦。要避免这种情况其实很简单,在类型转换时用VB本身的错误捕获就可以了,将上期的那个子程序改为:
   Private Sub Text1_KeyDown(KeyCode As Integer,Shift As Integer)
   Dim i As Integer
   If(KeyCode <> vbKeyReturn)Then Exit Sub
   On Error GoTo ErrorHandle
   i = Text1.Text
   Exit Sub
   ErrorHandle
   If Err.Number = 13 Then '如果输入含有其他字符
   MsgBox “请输入数字!”
   Else '如果出现其他错误,报告错误类型和错误描述
   MsgBox “错误号” + CStr(Err.Number)+ Chr(10)+“错误描述”+Err.Description
   End If
   End Sub
   获奖名单:
   安 徽 马高强
   辽 宁 沈成功
   云 南 王海滨
   上 海 丁 益
   新 疆 刘云飞
   以上幸运读者将获得电脑报最新出品的《电脑报系列配套光盘》杂志一套。
   本期题目:
   下面一段代码用于动态创建三个Image控件,并要求能显示出图示。运行下面的代码时,却不能显示出图来,执行时没有明显的错误。请修改。
   procedure TForm1.Button1Click(Sender: TObject);

var i,OldTop:integer;

begin
   FOR i:=0 TO 2 DO BEGIN
   imgCtrl[i]:=TImage.Create(Self);

WITH imgCtrl[i]: DO BEGIN
   Left:=0; Width:=50;Height:=50;

IF i=0 THEN
   Top:=0
   ELSE BEGIN
   OldTop:=imgCtrl.Top+Height+2;

Top:=OldTop;

END;

Picture.LoadFromFile(IntToStr(i)+'.bmp');

END;

END;

end;

procedure TForm1.FormDestroy(Sender:TObject);

var i:integer;

begin
   FOR i:=0 TO 2 DO
   imgCtrl[i].Free;

end;