动态创建怪事,又是Delphi的BUG吗?
如下一段代码:
unit template;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TfrmTemplate = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
ImageArray: Array[0..5] of TImage;
public
{ Public declarations }
end;
var
frmTemplate: TfrmTemplate;
I,J,Flag :Integer;
implementation
{$R *.dfm}
procedure TfrmTemplate.Button1Click(Sender: TObject);
begin
ImageArray[Flag] := TImage.Create(self);
ImageArray[Flag].Canvas.Brush.Color := clRed;
ImageArray[Flag].Canvas.FillRect(ImageArray[Flag].ClientRect);
ImageArray[Flag].Left := I + 10;
ImageArray[Flag].Top := J + 10;
ImageArray[Flag].Width := 300;
ImageArray[Flag].Height := 400;
ImageArray[Flag].Parent := Self;
Inc(Flag);
I := I + 20;
J := J + 20;
end;
procedure TfrmTemplate.FormShow(Sender: TObject);
begin
I := 0;
J := 0;
Flag := 0;
end;
procedure TfrmTemplate.Button2Click(Sender: TObject);
begin
showmessage(inttostr(Flag));
end;
end.
程序居然可以创建到ImageArray[6]以上不出错,我分明是设定:ImageArray: Array[0..5] of TImage,何解?