M
mxchao
Unregistered / Unconfirmed
GUEST, unregistred user!
动态连接库中创建MDI窗体,在MDIChild窗体中没有使用TMainMenu控件,使用了其他控件<br>MDIChild可以正常工作,但在MDIchild窗体中创建其他Normal窗体,在Normal窗体中使用<br>TMainMenu控件则在一定条件下出错!<br> 出错条件:<br> 1.Normal窗体中使用TmainMenu控件,并使用了TimageList,指定Menu使用图标。如果不<br>使用TimageList指定图标不会出错。<br> 2.动态连接库入口函数中指定Screen属性,代码如下:<br> <br>procedure ShowMdiForm(MDIForm: String; MainApplication:TApplication;ScreenHandle: TScreen); Export;<br>begin<br> //功能模块窗体<br> if UpperCase(MDIForm) = UpperCase('dlg_HourRatCostDetail') then if (not Assigned(dlg_HourRatCostDetail)) then<br> begin<br> Application :=MainApplication;<br> Screen := ScreenHandle[red];//这儿[/red]<br> dlg_HourRatCostDetail := Tdlg_HourRatCostDetail.Create(Application);<br> end<br>end;<br> 如果删掉Screen := ScreenHandle,则问题不会出现。<br> <br> 这两个条件要同时满足将出现问题,在创建Normal 窗体时出错,提示为:<br> cannot assign a TFont to a TFont<br> 这个提示信息前一个阶段曾经碰到过,是TStatusBar控件,如果在Dll子窗体中使用了<br>这个控件 ,并指定了Screen,将出现这个错误,之后将这个控件进行了一下修改,问题<br>解决。<br> 但对于TMainMenu控件,跟踪之后发现错误是在执行ApI函数时出错,没法子了!<br> 不知那位碰到过,或者在DLL使用了Menu + ImageList 以及TStatusbar。