【问题标题】:Form with OLE control is unable to receive focus properly带有 OLE 控件的表单无法正确接收焦点
【发布时间】:2015-03-04 06:34:47
【问题描述】:

我有一个表单,它有 2 个复选框,其中一个是 Ole Control :

现在,如果我调用它们两次,就会有 2 个表单实例,问题是:

  • 说现在焦点在表单1,我点击Ole Control(复选框),然后我无法点击表单2,这意味着即使我尝试点击很多表单2也无法获得焦点表格上的时间
  • 现在,如果我想获得另一个窗体的焦点,我必须单击标题栏或窗体的ole control
  • 如果我不点击表单的Ole Control 就不会发生这种情况
  • 如果我设置 form.Desktop = .f.,一切都很好,但我需要 desktop 属性为真

编辑:这是OLE 控件:

重现错误非常简单:

  • 创建一个空白表单,设置form.Desktop = .t.,命名为formOLE
  • 插入一个 OLE 复选框,如上图所示
  • 插入一个普通的狐狸复选框
  • 两次调用表单do form formOLE

【问题讨论】:

  • 您是否使用事件跟踪器查看触发了哪些事件,以帮助您了解哪里出错了?
  • @TamarE.Granor 谢谢,我去看看
  • @TamarE.Granor 抱歉回复晚了!
  • 由于有无数的 ActiveX 控件,有些在 VFP Form 中运行良好,有些则不能,您能否提供更多详细信息,一些重现代码或至少 OleClass 属性内容?
  • @StefanWuebbe 不好意思,我编辑了问题,请看一下,非常感谢!

标签: focus ole behavior visual-foxpro


【解决方案1】:

foxpro 上的 OCX 形式它应该始终是最后的补救措施。 在 OCX 控件获得焦点后,您不是唯一一个无法访问 foxpro 控件的人。以下是我在整个项目中完成的一些解决方案:

  • 调用一个非常小的表单只是为了重新调整foxpro的焦点,一个在激活事件上有一个thisform.relase的表单。这是在使用 OCX 后调用的。在 OCX 焦点后无法编辑文本字段是常见问题。
  • 使用 OCX 的可见属性

我建议在模态表单上使用 OCX,否则,表单可能无法访问。

【讨论】:

  • 我认为这是一个 MS 永远无法修复的错误。无论如何感谢您的解决方案,我会检查出来
猜你喜欢
  • 2015-04-04
  • 1970-01-01
  • 2017-07-07
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 2014-12-08
  • 2015-04-07
相关资源
最近更新 更多