**************急急急我都郁闷死了,关于程序自动退出的问题。****************(100分)

  • 主题发起人 主题发起人 skyhorse_zjj
  • 开始时间 开始时间
S

skyhorse_zjj

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Delphi7写的程序,当Showmodal一个窗体时,整个应用程序突然就全部退出了。
但不是每次都这样,也不是每个窗体显示的时候都会出现这样的问题。请教这是什么原因造成的啊?100分送上!
 
看看在showmodal相关附近有些什么代码?
 
把代吗贴出来! 大伙帮你看看
 
在设计状态也这样吧?没有错误提示???
 
这是因为你用的是动态连接数据库,一部分数据控件已经打开,才导致的,解决的方法是:
找到所在的程序文件夹,哪个窗体出问题,找到该窗体的 .pas 文件用记事本打开,然后查找ACTIVE 找到后把ACTIVE后的值改为FALSE,保存即可,再运行程序就不会出现了
 
跟踪一下看
 
谢谢各位朋友的帮忙,我先试试liuyongsheng0927的办法。
代码上我是肯定没问题的,就是showmodal语句,执行到这一句后就突然退出了。
 
我查了一下,只有一个TClientdataset控件在窗体的onshow事件里用代码打开了,可是我在别的窗体里也这么做的呀,别的窗体就没有自动退出。
 
你用的是动态库???在DLL中是否有调用ADO的控件,如果有,那可能是这个原因
如果在DLL中用了ADO方面的东西,要在DLL中单元文件最后一个END.的上一行加上如下代码
initialization//保留字,你可查一下帮助看其出现的具体位置
Coinitialize(nil);
finalization
CoUninitialize;
是因为由于 ADO 是使用了 COM,而使用 COM 前必须先初试化COM 库,就是用这个函数了。在创建 ADO 对象之前调用就可以了,最好是在单元或主窗口的初试化部分调用它。结束后记得调用 CoUninitialize。

一个单元的initiialization部分的语句是在Windows加载包含该单元的模块(应用程序、DLL或者包)时运行的。Delphi首先运行unit单位使用的所有单元的initialization部分,依次执照它们出现的顺序,先是interface中的单元,随后是implementation中的单元。单元的初始化部分在Delphi运行守所有使用 到的单元的初始化部分之后运行 。
Delphi跟踪记录了哪个单元已经被初始化了,这样一个单元的initialization部分就不会运行多次。
 
我的代码如下:
frmAddSfxm := TfrmAddsfxm.create(nil);
try
frmAddSfxm.showmodal;
~~~~~~~~~~~~~~~~~~~~~~~~执行到这一句后,窗体不显示,还是往下执行,比较奇怪。
cds.Active := false;
cds.Data := Objbase.LoadBase('tb_Yp');
cds.Active := true;
Autocalcwidth(grdYp);
finally
frmAddsfxm.release;
end;
 
TO app2001:我没有调用动态库,我只是自己开了个单元建了个类,所有的业务逻辑都用这个类来实现。
 
请让我看看在OnShow和OnActive的代码如何,可能那些地方有误.
 
有可能是编译器里出现了BUG,我以前也遇到到类似的问题,你可以把这段代码放到另一个新窗体里执行就可以了
 
使用
MainForm.Enable:=False;
frmAddSfxm.show;
...
MainForm.Enable:=True;
 
经过我锲而不舍的调试,终于让我找到了病根。我在窗体的oncreate中加了这样一条语句。
if (screen.width <> 1024) then
changescale(screen.Width,1024);
我设计程序时的分辨率是1024*768,如果程序在800*600的情况下运行,这个窗体showmodal时整个程序就会自动退出。把这条语句去掉就好了。各位帮忙分析一下这是为什么?如何解决控件自适应分辨率的问题。
谢谢!
 
我现在还在用DELPHI5.X
 
程序运行时遇到致命错误时,
有时会自动退出程序,甚至重启机器。
 
----如何解决控件自适应分辨率的问题。?

这个是个好问题
 
多人接受答案了。
 
后退
顶部