delphi 程序退出时报错
我用delphi编的程序,有三个from,其中from为主程序,from2和from3都要通过from1上的按钮显示在from1的Panel1中。from2,from3都...
我用delphi编的程序,有三个from,其中from为主程序,from2和from3都要通过from1上的按钮显示在from1的Panel1中。from2,from3都要在onshow时显示树。我在调用from2时是这样执行的: if from2=Nil Then
begin
SelectForm:=Tfrom2.Create(Self);
from2.Parent:=Panel1;
end;
from2.WindowState:=wsMaximized;
from2.Show;
from2.BringToFront;
关闭Form2时Form2.close;From3的调用和关闭和From2一样,但是在调用from2后,把from2关闭并关闭from1,有时出现如下报错:Access violation at address 004ED065 in module in module 'Project.exe'.Read of address 059D5D30.但是偶尔也会不报错。同样的写法,From3则没有这种现象。请问高手该怎么解决啊!这种情况如果跟代码该怎么跟啊!
from2=Nil Then
begin
from2:=Tfrom2.Create(Self);
from2.Parent:=Panel1;
end;
from2.WindowState:=wsMaximized;
from2.Show;
from2.BringToFront;
前面的写错了。 展开
begin
SelectForm:=Tfrom2.Create(Self);
from2.Parent:=Panel1;
end;
from2.WindowState:=wsMaximized;
from2.Show;
from2.BringToFront;
关闭Form2时Form2.close;From3的调用和关闭和From2一样,但是在调用from2后,把from2关闭并关闭from1,有时出现如下报错:Access violation at address 004ED065 in module in module 'Project.exe'.Read of address 059D5D30.但是偶尔也会不报错。同样的写法,From3则没有这种现象。请问高手该怎么解决啊!这种情况如果跟代码该怎么跟啊!
from2=Nil Then
begin
from2:=Tfrom2.Create(Self);
from2.Parent:=Panel1;
end;
from2.WindowState:=wsMaximized;
from2.Show;
from2.BringToFront;
前面的写错了。 展开
4个回答
展开全部
SelectForm:=Tfrom2.Create(Self);
这句的意思是根据Tfrom2类创建一个名叫“SelectForm”的窗体对象,后来却在反复操作From2,From2创建过么?
这不报错才是怪事呢!
如果是from2:=Tfrom2.Create(Self); 这样还报错的话
你试试把from2.Parent:=Panel1;这一句注释掉。
其实,最好不要用close的方式,因为会导致你多次开关窗体时 if from2=Nil Then这句有问题,close以后默认并不会置nil。还是hide和show这样的方式比较稳妥。
这句的意思是根据Tfrom2类创建一个名叫“SelectForm”的窗体对象,后来却在反复操作From2,From2创建过么?
这不报错才是怪事呢!
如果是from2:=Tfrom2.Create(Self); 这样还报错的话
你试试把from2.Parent:=Panel1;这一句注释掉。
其实,最好不要用close的方式,因为会导致你多次开关窗体时 if from2=Nil Then这句有问题,close以后默认并不会置nil。还是hide和show这样的方式比较稳妥。
展开全部
试过,不要Form2.Free.不用的时候用Forms.Hide就可以了.或者你根本 不用去管他,Delphi自己可以做这些工作.
如果非要把Form2.Free了,这不是哪啥痛吗?
如果非要把Form2.Free了,这不是哪啥痛吗?
追问
我没用From2.free啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按你的代码测试...没发现报错...你可以安装个eurekalog 看看报错的代码在哪一行..还有窗体的formstyle是怎么设置的...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SelectForm:=Tfrom2.Create(Self);
改成
from2:=Tfrom2.Create(Self);
改成
from2:=Tfrom2.Create(Self);
追问
是按照上面写的!from2:=Tfrom2.Create(Self);
追答
把from2 的borderstyle属性改为:bsNone
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询