unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
AA : array of TPanel;
procedure AAclick(Sender : Tobject);
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.AAclick(Sender: Tobject);
VAR N : INTEGER;
begin
for n :=Low(AA) to High(AA) do
begin
if AA[n]<>nil then
FreeAndnil(AA[n]);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var n : integer;
begin
SetLength(AA,3);
for n :=Low(AA) to High(AA) do
begin
AA[n] :=TPanel.Create(ScrollBox1);
AA[n].Parent :=ScrollBox1;
AA[n].Caption :=inttostr(n);
AA[n].Left :=0;
AA[n].Top :=n*AA[n].Height;
AA[n].Height :=50;
AA[n].Width :=50;
AA[n].Color :=Clred;
AA[n].OnClick :=AAclick;
end;
end;end.
////////////////////////////////////////////////////////当我释放第0个panel时候释放总是报错!第一个和第二个确没问题!
那是为什么?怎么解决啊?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
ScrollBox1: TScrollBox;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
AA : array of TPanel;
procedure AAclick(Sender : Tobject);
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.AAclick(Sender: Tobject);
VAR N : INTEGER;
begin
for n :=Low(AA) to High(AA) do
begin
if AA[n]<>nil then
FreeAndnil(AA[n]);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var n : integer;
begin
SetLength(AA,3);
for n :=Low(AA) to High(AA) do
begin
AA[n] :=TPanel.Create(ScrollBox1);
AA[n].Parent :=ScrollBox1;
AA[n].Caption :=inttostr(n);
AA[n].Left :=0;
AA[n].Top :=n*AA[n].Height;
AA[n].Height :=50;
AA[n].Width :=50;
AA[n].Color :=Clred;
AA[n].OnClick :=AAclick;
end;
end;end.
////////////////////////////////////////////////////////当我释放第0个panel时候释放总是报错!第一个和第二个确没问题!
那是为什么?怎么解决啊?
SetLength(AA,4);
for n :=Low(AA) to High(AA) do
begin
AA[n+1] :=TPanel.Create(ScrollBox1);
end;
释放的时间也这么做...
有没搞错不可以哈!