在做MDI应用程序时,我将MDI的主窗体和子窗体都放入了一个DLL文件中,
但当创建子窗体时却报错:can not create form. no mdi forms are currently active.
仔细分析后,原因是MDI主窗口不是作为Application的MainForm,
但我确实必须将MDI的主窗体和子窗体都放入DLL,以便其它应用系统调用。
请问各位能否帮我解决这个难题?很急!先谢谢了!
但当创建子窗体时却报错:can not create form. no mdi forms are currently active.
仔细分析后,原因是MDI主窗口不是作为Application的MainForm,
但我确实必须将MDI的主窗体和子窗体都放入DLL,以便其它应用系统调用。
请问各位能否帮我解决这个难题?很急!先谢谢了!
解决方案 »
- 用代码实现EXCEL直接写到SQL2000数据库已经建好的表中
- 关于delphi的1stclass4000ProVcl7组件使用,
- 用鼠标选中了listview的一项,当鼠标点另外一个控件时,如何让listview的selected项保持为选中时的颜色状态呢?
- 表结构更改问题,哪位大哥能帮帮忙?
- 各位帮忙看看,小弟实在郁闷!!!
- 求教IntraWeb问题一个?
- 打印时为什么会有这个问题???大哥们救命
- oracle的登陆
- 关于TIF格式文件在delphi6中预览的问题
- Sql Server 中一条条浏览记录时出现了 Invalid Blob Handle In Record Buffer 的错误,请问如何解决?
- 求助高手,问题还是没解决!!!
- 个人朋友请帮忙呀,这个问题并不难的
不行啊,就是因为引用MDI主窗体的的窗体是Application的主窗体才会有这个问题的。我想问题或许有以下两个解决的方法:
1.想方设法把MDI的主窗体转换成Application的主窗体
2.是不是可以用API和消息自己制作MDI应用程序,不用Delphi的FormStyle设置?这样MDI子窗体就不会只去找Application的主窗体了?以上两种方式可行吗?如果可行能否给个示例?
—————————————————————————————————
┏━★━━◆━━★━┓
♂欢|◢CSDN◣|使♂ ▲自由保存帖子,浏览,关注检测
┃迎|◥论坛助手◤|用┃ ▲完善的CSDN客户端工具
┗━☆━━◇━━━☆┛ ▲自动添加签名......让你更快,更爽,更方便地上CSDN...
http://www.csdn.net/expert/topic/573/573604.xml
http://www.chinaok.net/csdn/csdn.zip
显示子窗体procedure TMainFrm.B2Click(Sender: TObject);
var pHandle:^THandle;
begin
pHandle :[email protected];
pHandle^:=ClientHandle; ///关键在这一句!
with TFsq.Create(Application) do show;end;
你真是高手,我新建了个工程,果然可以调用MDI子窗体了。
但是我的问题你解决了一半:
现在我是把MDI的父窗体和子窗体都放在了一个DLL中,
由外部调用者首先调用MDI父窗体,
而DLL中的Application.MainForm实际上是等于nil :(
所以执行到pHandle^:=ClientHandle; 时就出现了访问错误了请问该如何解决MDI主窗体在DLL中这个问题呢?希望你能够再次解答,不过就算无法解决也会给分的,谢谢
不过千万别告诉我这样解决,我可不想这么做,
因为调用者有可能不是Delphi开发的模块。
在dll端应该一个函数
procedure Show(MainHwnd : HWND);//
begin
Application.Handle := MainHwnd;//MainHwnd是调用端Application.Handle;
//然后以下是建立窗口的事了
end;
这一步是肯定要做的,但解决不了MDI的问题
方法是用MDI主窗体去接管Application的主窗体就可以了。
这个方法还是受到了king_017的启发,所以给你加上分。