S skyhorse_zjj Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-29 #1 我用Delphi7写的程序,当Showmodal一个窗体时,整个应用程序突然就全部退出了。 但不是每次都这样,也不是每个窗体显示的时候都会出现这样的问题。请教这是什么原因造成的啊?100分送上!
L liuyongsheng092 Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-29 #5 这是因为你用的是动态连接数据库,一部分数据控件已经打开,才导致的,解决的方法是: 找到所在的程序文件夹,哪个窗体出问题,找到该窗体的 .pas 文件用记事本打开,然后查找ACTIVE 找到后把ACTIVE后的值改为FALSE,保存即可,再运行程序就不会出现了
这是因为你用的是动态连接数据库,一部分数据控件已经打开,才导致的,解决的方法是: 找到所在的程序文件夹,哪个窗体出问题,找到该窗体的 .pas 文件用记事本打开,然后查找ACTIVE 找到后把ACTIVE后的值改为FALSE,保存即可,再运行程序就不会出现了
S skyhorse_zjj Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-29 #7 谢谢各位朋友的帮忙,我先试试liuyongsheng0927的办法。 代码上我是肯定没问题的,就是showmodal语句,执行到这一句后就突然退出了。
S skyhorse_zjj Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-29 #8 我查了一下,只有一个TClientdataset控件在窗体的onshow事件里用代码打开了,可是我在别的窗体里也这么做的呀,别的窗体就没有自动退出。
A app2001 Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-29 #9 你用的是动态库???在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部分就不会运行多次。
你用的是动态库???在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部分就不会运行多次。
S skyhorse_zjj Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-29 #10 我的代码如下: 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;
我的代码如下: 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;
S skyhorse_zjj Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-29 #11 TO app2001:我没有调用动态库,我只是自己开了个单元建了个类,所有的业务逻辑都用这个类来实现。
A AWEIF Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-29 #12 请让我看看在OnShow和OnActive的代码如何,可能那些地方有误.
H hbgawyf Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-29 #13 有可能是编译器里出现了BUG,我以前也遇到到类似的问题,你可以把这段代码放到另一个新窗体里执行就可以了
X xuhao1 Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-29 #14 使用 MainForm.Enable:=False; frmAddSfxm.show; ... MainForm.Enable:=True;
S skyhorse_zjj Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-30 #15 经过我锲而不舍的调试,终于让我找到了病根。我在窗体的oncreate中加了这样一条语句。 if (screen.width <> 1024) then changescale(screen.Width,1024); 我设计程序时的分辨率是1024*768,如果程序在800*600的情况下运行,这个窗体showmodal时整个程序就会自动退出。把这条语句去掉就好了。各位帮忙分析一下这是为什么?如何解决控件自适应分辨率的问题。 谢谢!
经过我锲而不舍的调试,终于让我找到了病根。我在窗体的oncreate中加了这样一条语句。 if (screen.width <> 1024) then changescale(screen.Width,1024); 我设计程序时的分辨率是1024*768,如果程序在800*600的情况下运行,这个窗体showmodal时整个程序就会自动退出。把这条语句去掉就好了。各位帮忙分析一下这是为什么?如何解决控件自适应分辨率的问题。 谢谢!
L lixy Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-31 #17 程序运行时遇到致命错误时, 有时会自动退出程序,甚至重启机器。
Z zLight Unregistered / Unconfirmed GUEST, unregistred user! 2004-03-31 #18 ----如何解决控件自适应分辨率的问题。? 这个是个好问题