M METALLEE Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-09 #1 在Dll中创建子窗口后我发现用ShowModal显示的窗体Hint可以正常出现,用Show方式显示的窗体Hint失效 如何处理?
M METALLEE Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-09 #2 在Dll中创建子窗口后我发现用ShowModal显示的窗体Hint可以正常出现,用Show方式显示的窗体Hint失效 如何处理?
Y ysai Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-10 #3 听说,仅仅是听说 要把EXE中的screen对象传到DLL中,并赋值给DLL中的screen对象
M METALLEE Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-10 #4 已经传过了,application也传过去了,没用[]
M METALLEE Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-11 #8 唉 查了一天 没头绪。有过插件开发经验的高手们,指条道
晶 晶晶 Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-12 #9 你查查TWinHint所在的单元是不是有全局变量,如果有的话就要注意了,很多时候就是这些全局变量作怪的,因为在dll中有一份,可能主程序中也有一份。而dll中大部分是为空的,最好把应用程序中的相应值传过来,或者深度复制过来,就像一般delphi中dll要传递Application和Screen对象一样,这样才可能在EXE和DLL中统一使用同一个对象。 注:dll中Application和Screen对象初始化是为空的!!
你查查TWinHint所在的单元是不是有全局变量,如果有的话就要注意了,很多时候就是这些全局变量作怪的,因为在dll中有一份,可能主程序中也有一份。而dll中大部分是为空的,最好把应用程序中的相应值传过来,或者深度复制过来,就像一般delphi中dll要传递Application和Screen对象一样,这样才可能在EXE和DLL中统一使用同一个对象。 注:dll中Application和Screen对象初始化是为空的!!
M METALLEE Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-12 #10 to 晶晶 一看你就知道你做过这方面的开发,你说的问题我也发现了,dll启动后Application是空的。你关于hint的建议我一会看看,不过希望不大,我觉得问题还是出现在application上面。 我发现如果不覆盖Dll application的话Show出来的form hint显示完好,但是程序结束会出错。把application覆盖了程序不会出错,但是show 的form hint 失效``````
to 晶晶 一看你就知道你做过这方面的开发,你说的问题我也发现了,dll启动后Application是空的。你关于hint的建议我一会看看,不过希望不大,我觉得问题还是出现在application上面。 我发现如果不覆盖Dll application的话Show出来的form hint显示完好,但是程序结束会出错。把application覆盖了程序不会出错,但是show 的form hint 失效``````
G glbboy Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-16 #11 Project->Option->packages选中build with runtime package, 底线选中vcl包就可以,如果装了其他控件也需要加入。
W windcowboy Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-25 #12 问题解决了,告诉大家,如果实在没有解决,我帮助你.ok.
M METALLEE Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-26 #13 还没解决呢 要是解决了我肯定要揭帖的,楼上的兄弟有办法吗?
K kinneng Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-29 #14 这是VCL设计上的问题,带BPL可以简单解决,按glbboy的去干活!否则放弃VCL,自己 用API创建界面,像C那样,不过很惨,其它传来传去的方法就怕挂一漏万。
M METALLEE Unregistered / Unconfirmed GUEST, unregistred user! 2005-10-31 #15 build with runtime package的方法我已经试过了,在dll里面非ShowModal界面仍旧无法相应OnMouseEnter和OnMouseLeave事件,哎.到底有没有办法呢?[][]
build with runtime package的方法我已经试过了,在dll里面非ShowModal界面仍旧无法相应OnMouseEnter和OnMouseLeave事件,哎.到底有没有办法呢?[][]
M muhx Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-08 #16 还要传HintWindowClass: THintWindowClass,不然使用Hint会出错 我的一段代码如下: var FrmAlarmLog: TFrmAlarmLog; { 2005-11-07 17:32 by muhx} procedure ShowAlarmLog(AApplication: TApplication AScreen: TScreen AHintWindowClass: THintWindowClass) stdcall; var tmpLongInt: PLongint; begin Application := AApplication; Screen := AScreen; HintWindowClass := AHintWindowClass; tmpLongInt := @(Application.MainForm); tmpLongInt^ := Longint(AApplication.MainForm); FrmAlarmLog := TFrmAlarmLog.Create(Application.MainForm); try FrmAlarmLog.Show; except FrmAlarmLog.Free; end; end; { 2005-11-07 17:32 by muhx } procedure CloseAlarmLog; begin if FrmAlarmLog <> nil then FreeAndNil(FrmAlarmLog); end;
还要传HintWindowClass: THintWindowClass,不然使用Hint会出错 我的一段代码如下: var FrmAlarmLog: TFrmAlarmLog; { 2005-11-07 17:32 by muhx} procedure ShowAlarmLog(AApplication: TApplication AScreen: TScreen AHintWindowClass: THintWindowClass) stdcall; var tmpLongInt: PLongint; begin Application := AApplication; Screen := AScreen; HintWindowClass := AHintWindowClass; tmpLongInt := @(Application.MainForm); tmpLongInt^ := Longint(AApplication.MainForm); FrmAlarmLog := TFrmAlarmLog.Create(Application.MainForm); try FrmAlarmLog.Show; except FrmAlarmLog.Free; end; end; { 2005-11-07 17:32 by muhx } procedure CloseAlarmLog; begin if FrmAlarmLog <> nil then FreeAndNil(FrmAlarmLog); end;
M METALLEE Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-10 #17 算了,估计这个问题在这里是解决不了了,我再想想别的办法 揭帖,谢谢大家