delphi窗体新建和关闭的问题

我有一个MDI主窗体,两个MDI子窗体,主窗体打开子窗体代码如下:procedureTMainForm.N7Click(Sender:TObject);vari:Inte... 我有一个MDI主窗体,两个MDI子窗体,主窗体打开子窗体代码如下:
procedure TMainForm.N7Click(Sender: TObject);
var
i:Integer;
begin
if assigned(form5) then
begin
for i :=0 to MainForm.MDIChildCount -1 do
if (MainForm.MDIChildren[i] is tForm5) then
begin
self.MDIChildren[i].BringToFront;
MDIChildren[i].SetFocus;
Exit;
end;
end
else
begin
Application.CreateForm(TForm5,Form5);
Form5.Show;
end;
end;

procedure TMainForm.N8Click(Sender: TObject);
var
i:Integer;
begin
if Assigned(Form11) then
begin
for i:=0 to MainForm.MDIChildCount-1 do
if (MainForm.MDIChildren[i] is TForm11) then
begin
Self.MDIChildren[i].BringToFront;
MDIChildren[i].SetFocus;
Exit;
end;
end
else
begin
Application.CreateForm(TForm11,Form11);
Form11.Show;
end;
end;

Form5和Form11的FormClose里面写了Action:=cafree; FormDestroy里面分别写了
Form5:=nil; Form11:=nil;
现问题是如果是打开单个窗体,怎么操作都没有问题,如果同时打开两个窗体,在关闭时就会报错:Access violation at adress 0055dd7f in module mdiapp.exe

请问这个该怎么解决
Action:=caFree; 我也有写这句,但不知为什么不行 ,如果不写Form5:=nil这句,那么这个子窗体关闭后,再点就打不开
展开
 我来答
perock
2009-04-22 · TA获得超过971个赞
知道小有建树答主
回答量:971
采纳率:50%
帮助的人:795万
展开全部
Form5:=nil; Form11:=nil; 这里有错误
首先要销毁一个窗口不能给它赋nil form本是只是一个指针地址,form1:=nil的意思是把nil地址重新赋予form1而form1并没有真正从内存中消失.如果要销毁一个窗体可在它的OnClose事件中写上Action:=caFree;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式