为什么可以正常建立与使用,但退出时却会出错?

okdelphi 2003-01-31 01:37:53
我想把多个窗体建立在同一个Unit单元文件中。


我定义了:
type
TForm2 = class(TForm)
Panel1:TPanel;
private
{ Private declarations }
public
{ Public declarations }
end;




然后在在form1.Button1Click中加入:

application.CreateForm(TForm, Form2);
form2.show;


这样子可以显示form2了。



但是我当我执行form2.Panel1:=TPanel.Create(self)后可以正常使用,但在退出程序时就会显示错误(即使在退出前使用form2.Panel1.free与form2.Panel1:=nil也照会出错),不知道为什么?

(把以上的panel改为其它如button,lable等控件均也会出现同样的错误)


期望高手指点,不尽感谢!!!
...全文
20 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
newyj 2003-02-10
  • 打赏
  • 举报
回复
form2.Panel1:=TPanel.Create(self)
这句好像你是在form1中运行的
这是self是form1,
Panel1释放是由form1负责的
form2.Panel1:=TPanel.Create(form2)
gzllich 2003-02-02
  • 打赏
  • 举报
回复
form2.Panel1:=TPanel.Create(self)?
Panel1存在了吗?你是创建Panel还是赋值啊?当然会出错啦
改成with TPanel.Create(form2) do begin ...试试看
sunware 2003-02-02
  • 打赏
  • 举报
回复
1、你的.dpr里是不是已经建立了Form2?即:是不是已经有了application.CreateForm(TForm2, Form2)?只有这样,你的Form2.show才是对的。
2、假定已经有了Form2,那么根据你的类定义,Form2.Panel1也已经建立了,那么后面的Form2.panel1 := TPanel.Create(self)就莫名其妙了。

johnmack 2003-01-31
  • 打赏
  • 举报
回复
新年快乐!
wx1452 2003-01-31
  • 打赏
  • 举报
回复
application.CreateForm(TForm2, Form2);

怎么会有错呢
什么错误
szjay 2003-01-31
  • 打赏
  • 举报
回复
application.CreateForm的用法看dpr文件就可了。
okdelphi 2003-01-31
  • 打赏
  • 举报
回复
出现在那个汇编窗口并显示:
project d:\delphi6\projects\project1.exe faulted with message:'access violation at 0x77f86121:write of address 0x00030f30'.process stopped.use step or run to continue.


我想估计是因为
application.CreateForm(??????, Form2);引起的,不知得怎么解决,哪位有多窗口集于同一Unit文件的源码让我参考的吗?感谢您了!!
okdelphi 2003-01-31
  • 打赏
  • 举报
回复
我想合理建立Form2时就该写成:
application.CreateForm(TForm2, Form2);
但是这样子会出错,我改为
application.CreateForm(TForm, Form2);

后可以用,但就出现在上述问题....
pilicat 2003-01-31
  • 打赏
  • 举报
回复
是什么错误信息,写出来看看好吗?

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧