还是包的问题(200分)

  • 主题发起人 主题发起人 ericui
  • 开始时间 开始时间
E

ericui

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么包里面的mdi子界面释放后,然后再createform总是报错,请多多指教!
郁闷,不打包好好的,多谢了
 
我帮你调试
ningbo_dyz@sohu.com
 
我包里面要查询数据库,还是三层架构,给你程序好像不太显示。
代码语法没有错误,运行时才出现错误。
 
为何要用MDI子窗体呢?用普通窗体不行吗?
MDI子窗的释放一般是写在它的ONCLOSE事件中action := caFree;
不要自己释放试试
 
delphi的MDI做得不成功的,建议不要用MDI为好,你可能试试其明显的一个BUG是子窗口放大后没有最小化、还原和关闭三个窗口按钮,用鼠标按一下MDI窗口右上角后才出现,而且让子窗口还原后以上三个按钮不消失,用鼠标点击时报错!!!
 
mdi默认关闭为最小化,我在onclose事件里面写了action := cafree;
如果不自己释放还能怎么办?它自己能释放?
 
在ONCLOSE事件中写了ACTION := caFree的话,关闭它时,它就应当自动释放了。
 
to 蒋劲刚:
mdi释放当然是在onclose事件里面写action := cafree;
我不明白你那个自动释放是不是说得这个,我本来就是这样做的,
报错,说程序不能 读什么地址。
 
就是!那我就不知怎么回事了!最好能贴出部份代码来,帮你分析
 
对于mdi的窗体创建和释放我是使用一个单独的创建者来管理他们的,该创建者负责mdi子窗体创建和释放等。
 
这个问题很通常的,你可以做个包试试,包里面包含一个窗体,其为mdi子窗体。
编译运行时引入包即可。
 
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(self);
Form2.show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.Close;
end;
我这样写的,没有任何问题呀!
你的包到底是什么?
 
package,你把form2放到一个包里面试试
 
FORM2放到PACKAGE中如何在工程中引用呢?
我的MSN:jiang_jg@hotmail.com
 
没有msn呵呵,qq:14415392;和普通的一样引用就行,不过需要编译连接包,这样exe文件就小了
我自己搞定了。需要将form2的指针赋为nil;
 
在工程中,要去掉FORM2这个UNIT吗?
 
小心,不要有内存泄漏呀![:D]
 
明了,试了一下还是可以的。以前我从没这样做过,谢谢你啦![:D]
但我突然想起,我的BUTTON2的代码有问题,这样我点两次BUTTON1后,生成了两个TFORM2的实例,FROM2中存的就是最后一次的FORM2,所有BUTTON2点一次可以,点两次将会出错。
所以BUTTON2中应该换成ActiveMDIChild.Close;
 
后退
顶部