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包来编译。 200分奖励, 寻找快速的线性插值图像缩放程序 请教如何获取TDBGridEh控件的合计 这样的update怎么有错? 问一个比较初级的问题:怎么把一个数据库里面的所有数据导入到另外一个数据库里面?在线等待,不够我再开贴加分,谢谢! 调用帮助文件 DATA Control控件怎样连接数据库的? [疑惑]在try...except...中到底是怎样对错误信息进行处理的? 哪里有delphi5下载,我的光盘坏了,又买不到,下了就给50 分! 向各位大虾们请教一个数据库问题!送分题! 項目做完了!交流交流.... 用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]);
别让它与模块相关就行了。