带有 OLE 控件的窗体无法正确接收焦点
Form with OLE control is unable to receive focus properly
我有一个表单,它有 2 个复选框,其中一个是 Ole Control:
现在,如果我调用它们两次,就会有 2 个表单实例,问题是:
- 说焦点现在在表格
1
上,我点击了 Ole 控件(复选框),然后我无法点击表格 2
,意思是表格 2 无法接收即使我尝试在表格上多次点击也能保持专注
- 现在,如果我想获得另一个窗体的焦点,我必须单击标题栏或窗体
ole control
- 如果我不单击表单
的 Ole Control
就不会发生这种情况
- 如果我设置 form.Desktop = .f.,一切都很好,但我需要
desktop
属性 为真
编辑:这是 OLE
控件:
重现错误非常简单:
- 创建空白表单,设置
form.Desktop = .t.
,命名为formOLE
- 插入一个 OLE 复选框,如上图
- 插入一个普通的狐狸复选框
- 两次调用表单
do form formOLE
foxpro 上的 OCX 形式应该永远是最后的补救措施。
在 OCX 控件获得焦点后,您不是唯一无法访问 foxpro 控件的人。这些是我在整个项目中完成的一些解决方案:
- 调用一个非常小的表单来重新调整 foxpro 焦点,该表单在激活事件时有一个 thisform.relase。这是在使用 OCX 后调用的。在 OCX 焦点后无法编辑文本字段是常见问题。
- 使用 OCX 的可见属性
我建议在模态表单上使用OCX,否则表单可能无法访问。
我有一个表单,它有 2 个复选框,其中一个是 Ole Control:
现在,如果我调用它们两次,就会有 2 个表单实例,问题是:
- 说焦点现在在表格
1
上,我点击了 Ole 控件(复选框),然后我无法点击表格2
,意思是表格 2 无法接收即使我尝试在表格上多次点击也能保持专注 - 现在,如果我想获得另一个窗体的焦点,我必须单击标题栏或窗体
ole control
- 如果我不单击表单 的
- 如果我设置 form.Desktop = .f.,一切都很好,但我需要
desktop
属性 为真
Ole Control
就不会发生这种情况
编辑:这是 OLE
控件:
重现错误非常简单:
- 创建空白表单,设置
form.Desktop = .t.
,命名为formOLE - 插入一个 OLE 复选框,如上图
- 插入一个普通的狐狸复选框
- 两次调用表单
do form formOLE
foxpro 上的 OCX 形式应该永远是最后的补救措施。 在 OCX 控件获得焦点后,您不是唯一无法访问 foxpro 控件的人。这些是我在整个项目中完成的一些解决方案:
- 调用一个非常小的表单来重新调整 foxpro 焦点,该表单在激活事件时有一个 thisform.relase。这是在使用 OCX 后调用的。在 OCX 焦点后无法编辑文本字段是常见问题。
- 使用 OCX 的可见属性
我建议在模态表单上使用OCX,否则表单可能无法访问。