D5在创建多个大窗体时会出错!知道解决方法的就说一下吧。 (300分)

  • 主题发起人 主题发起人 LiDS
  • 开始时间 开始时间
L

LiDS

Unregistered / Unconfirmed
GUEST, unregistred user!
现象:
主窗体上有一个按钮button1,onlcike=" frm:=Tform2.create(self);frm.show(); ";
Tform2是一个比较大的窗体(.dfm 文件超过100K);
多次点击button1 程序会报错:win32 error!;
我的程序是需要同时显示多个form的;
且内存并未耗尽,即使内存不够,也应显示内存不足错误,且不应影响余下操作。
希望这不是Delphi的Bug;
其他现象:
1,使用的是D版Delphi5,Delphi6 ,Delphi 5 D5EntUpdate1 也没用。
2,此程序在win2000下可创建的Form数目(同时显示)较 win98 要多5~10 倍;
3,假设能创建的数目是10个,则若打开两个此程序,每个程序可创建的Form的和大约也是10个!
4,一旦出现错误,有时会影响其他程序甚至OS的操作(Start Menue)
打了这么多字,希望有人能回答。Thank You.
 
超过100k的窗体文件,一定是将许多的图片和其它的一些资源放到了窗体中了,首先可以尝试
不要将这些资源都放入窗体中,可以使用资源文件或者动态取得,有许多的超过100k的窗体文件
编译会比较慢.看你的显示窗体的代码,为什么要打开同样的窗体许多次呢?
frm:=TForm2.Create(Application)
with frm do
try
ShowModal;
finally
Free;
end;
这样不行吗?至少我还没有遇到你说的情况.
 
你的问题我也遇到过不过只在98下
好象2000下没有这种问题,主要是资源分配的问题,系统资源
消耗过多,不知2000下资源分配的方式有什么不同。
解决的方法是使用Frame即可。
 
to HIGOAL
能贴出你的Frame代码吗? 我试了三种方法都不行,错误一样:
1,onclick="with TFrame3.Create(nil) do Parent:=self;"//no consider of free
2,onclick="with TForm2.Create(nil) do show;"// Form2 Contain Frame;
3,onclick="f:=TForm2.Create(nil) ;with TFram3.Create(nil) do Parent:=f; f.show;"// Form2 not Contain Frame;
同时显示多个窗体只是能让用户能同时处理多个业务;不知有否其他方法?
 
把TForm1的代码贴出来看看倒是真的。
 
弄那么多form干吗?反正屏幕就那么大,我用pagecontrol,100页也没问题。
 
应该是你程序中有些问题,创建多少无所谓吧。
 
用NoteBook来代替把!
 
to 大家
这个问题是由我的程序抽象出来的,我的程序是由一个PageControl承载多个Forms的,每一个Forms有好多TEdit,TMemo,TCombobx等;
Form其实是同一个,只是内容不同的;
于是我做一个模型,由主窗体上的Button Click 出多个Form2(dfm>100k);
结果程序出错 Win32 Error,且影响现有Form的操作,甚至OS的操作
大家可以试一试,看有没有这种想象(希望有)
 
估计是你在窗体创建和释放的过程中没有处理好内存。
看看是否有指针没有正常释放。
 
to zhumoo
能贴出你的Frame代码吗? 我试了三种方法都不行,错误一样:
1,onclick="with TFrame3.Create(nil) do Parent:=self;"//no consider of free
2,onclick="with TForm2.Create(nil) do show;"// Form2 Contain Frame;
3,onclick="f:=TForm2.Create(nil) ;with TFram3.Create(nil) do Parent:=f; f.show;"// Form2 not Contain Frame;

 
看来没戏了见者有分
 
有答案的请Email我
 
用frame吧
mastering delphi6第10章有介绍
下载看看先
 
怎么无法结束此问题?
 
后退
顶部