100分:dll中的MDI子窗体中,Tab键和回车键的失效问题如何解决? DLL种的MDI子窗体上的tab和回车都无效,偏偏这个程序又很要求键盘操作。看了一些帖子,说是传句柄什么的,最近一直忙其他的事情,没时间仔细研究,能否给个比较详细的例子,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在DLL的基类,或每个DLL中实现窗体的keypress。 (下面的例子是判断为TMemo就不切换活动控件)procedure TfrmBase.FormKeyPress(Sender: TObject; var Key: Char);begin if (Key = Chr(13)) or (Key = Chr(40)) then if not (ActiveControl is TMemo) then SelectNext(ActiveControl, True, True);end; 楼上的方法不能从根本上解决MDI子窗体存在的诸多问题,曾经经历很长时间的痛苦折磨,最终得到了答案,很简单,就是主程序和DLL都带VCL包编译,这样出来的子窗体与普通窗体一样好用,什么问题也都没了。如果楼主还不明白,可以加我QQ交流,希望少走弯路。 问题如下:1,带包编译后,主程序界面左上角的小图标就变成了白框2,本来MDI程序种,所有的子窗体以及子窗体上调用的窗体都应该包含在主窗体中,但是带包编译后,一级子窗体到是在主窗体中,再调用出来的窗体就跑到主窗体外面去了 将exe的application对象传入dll覆盖dll的application(之前保存dll的application,退出时置回) 谢谢楼上的兄弟,可否给个比较具体的例子,我对application这些概念不是很清楚 楼上算找对人了,你在delphifans.com上下载一个例子上面全解决了,呵呵去吧。 楼主问题还没解决呀,10楼的说法不妥,尽管传Application有传的道理,但与楼主的问题不相关,我看过楼主的代码,只要把主程序各单元中那些CoInitialize删除,DLL中建立数据模块,引用ADO控件的单元CoInitialize,好好整理一下DLL就应该没问题,因为我的程序就是这样做的,一点问题也没有。 把Controls单元的ControlAtomString := Format('ControlOfs%.8X%.8X', [HInstance, GetCurrentThreadID]);改成ControlAtomString := Format('ControlOfs%.8X%.8X', [0, GetCurrentThreadID]);别让它与模块相关就行了。 面对这类问题,我只会建议你带上vcl包来编译。 关于ADOQuery创建SQL临时表的怪现象,求解释! 急急急求接收短信代码 各位大侠:DELPHI 编程,ADOQUERY写SQL数据库时,写入内容为空时如何处理? 急急!!!医院影像信息信号到达工作站的电脑上,怎么样在DELPHI中捕捉将信号转化为图像??求救!! 怎么动态调用dll???? 急 ※※用Excel控件怎样设置指定的Cell的字体的颜色?谢谢! DBMemo显示access内容的问题 水晶报表任何使用(资料也可),在那里可以得到? delphi字体的問題 有什么API函数能调用MID音乐? 用TIdHTTP控件经常出错,请高手看看 包如何转换成ocx?
procedure TfrmBase.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (Key = Chr(13)) or (Key = Chr(40)) then
if not (ActiveControl is TMemo) then
SelectNext(ActiveControl, True, True);
end;
1,带包编译后,主程序界面左上角的小图标就变成了白框
2,本来MDI程序种,所有的子窗体以及子窗体上调用的窗体都应该包含在主窗体中,但是带包编译后,一级子窗体到是在主窗体中,再调用出来的窗体就跑到主窗体外面去了
ControlAtomString := Format('ControlOfs%.8X%.8X', [HInstance, GetCurrentThreadID]);
改成
ControlAtomString := Format('ControlOfs%.8X%.8X', [0, GetCurrentThreadID]);
别让它与模块相关就行了。