MDI窗体DBGrid控件无响应

wqz1108 2017-11-13 04:55:35
详细情况:
一个主窗体和一个MDIChild窗体,MDI窗体含DBGrid控件。
问题:在MDI窗体DBGrid控件拥有焦点时,点击主窗体控件后,再直接点击MDIChild窗体中DBGrid控件,DBGrid控件没有任何响应,只有先点击MDIChild窗体其它控件后,才能点击DBGrid控件!
为解决此问题,在MDI窗体的FormDeactivate事件中写入:
Self.ActiveControl:=nil;
可解决MDIChild窗体中DBGrid控件的响应问题,但又造成点击主窗体控件时,第一次点击无效。

请问各位大侠:
(1)为何出现MDIChild窗体中DBGrid控件无响应?如何解决?
或者
(2)如何解决MDI窗体增加FormDeactivate事件后,主窗体控件第一次点击无效的问题?
...全文
435 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wqz1108 2017-12-22
  • 打赏
  • 举报
回复
没办法很好地解决,只好加上子窗口失去焦点时,变更焦点控件的代码,但仍有一些小毛病。 可能要解决问题,只好按lyhoo163说的用DBGridEh控件了。 感谢大家讨论,平均给分吧!
wqz1108 2017-11-17
  • 打赏
  • 举报
回复
我用最简单的界面,试过了,不是coldsea_2017说的问题,是delphi院本就有的问题。 To:ouwei_bt,delphi带有wwwDBGrid吗?没找到? 不想用DBGridEh,主要是发现有错误(5.2.84),改了一些,没把握。
doloopcn 2017-11-17
  • 打赏
  • 举报
回复
我D6、D7、XE一直没有出现过像楼主的情况。 估计楼主会出现这种情况是因为MDI窗口是系统自动创建的,而不是手工CREATE的,而我的MDI模式都是用代码把窗口创建好之后,再赋予MDI子窗口属性。 系统自动创建——就是说你在IDE环境中就把MDI窗口包含在PROJECT中。 我一直的方式都是把所有的MDI窗口移去,PROJECT中只剩下主窗口。
coldsea_2017 2017-11-16
  • 打赏
  • 举报
回复
不知道你的子窗体生成机制,不过我依稀记得以前出现这类问题,猜测是set parent之类的问题;如果在程序中有类似于form2.perent:=form1.panel这样的设置,改成window api函数中的setparent(form2.handle,form1.panel.handle)这样的方法,相应的问题应该会解决。祝你顺利
菜鸟求指点 2017-11-16
  • 打赏
  • 举报
回复
我用的是wwwDBGrid 无此问题
lyhoo163 2017-11-14
  • 打赏
  • 举报
回复
我习惯使用DBGridEh,也就是MDI中使用DBGridEh控件,基本无此类问题。
wqz1108 2017-11-14
  • 打赏
  • 举报
回复
没人回答??加分60!我的全部分数。
wqz1108 2017-11-14
  • 打赏
  • 举报
回复
如果加上主窗体Form1.SetFocus,当点击主窗体上的ComboBox控件,将造成ComboBox控件完全无响应。
shadowpj 2017-11-14
  • 打赏
  • 举报
回复
嗯,发现用DBGrid有这个问题。DBGRIDEH没有。 在MDI窗体的FormDeactivate事件中写入: Self.ActiveControl:=nil; Form1.SetFocus;(主窗体form1) 就不存在第一次点击主窗体控件无效问题了。
wqz1108 2017-11-13
  • 打赏
  • 举报
回复
MDI窗体增加FormDeactivate事件后,主窗体控件第一次点击无效。 按钮类、菜单类控件没问题,但ComboBox控件、DBGrid控件有问题。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧