【发布时间】:2014-06-06 13:02:29
【问题描述】:
当我使用键盘命令时,它在 Foxpro 调试环境中工作,但是当我构建 .exe 时,键盘命令不起作用。当我聚焦 Foxpro 表单时,即使按下 F1 也没有任何反应,直到我将焦点从正在运行的应用程序上移开?
例子
键盘 F1
在调试非.exe 模式下效果很好,但在.exe 模式下什么都不做?
【问题讨论】:
标签: foxpro
当我使用键盘命令时,它在 Foxpro 调试环境中工作,但是当我构建 .exe 时,键盘命令不起作用。当我聚焦 Foxpro 表单时,即使按下 F1 也没有任何反应,直到我将焦点从正在运行的应用程序上移开?
例子
键盘 F1
在调试非.exe 模式下效果很好,但在.exe 模式下什么都不做?
【问题讨论】:
标签: foxpro
我认为这是设计使然。帮助文件不是 exe 的一部分,它是开发环境的一部分。因此,在 FoxPro 开发环境之外运行应用程序时,帮助文件不可用。
【讨论】:
虽然@DaveB 在 F1 帮助子系统的设计上是正确的,但您仍然可以通过添加“ON KEY LABEL”来规避并让按键工作......类似于......
ON KEY LABEL F1 CallYourFunction()
但是“CallYourFunction”不能引用任何“This”。或“此表格”。但是,如果您有一个全局变量指向您希望 F1 链接到的某个对象,您也可以这样做……例如
oMyGlobalVar = Thisform
ON KEY LABEL F1 oMyGlobalVar.SomeFunction()
然后使用您的 KEYBOARD {F1} 将正确调用函数或 object.function。
【讨论】:
你在哪里有 KEYBOARD 命令?是在表单上的按钮 Click() 中,还是在其他方法中?
KEYBOARD 命令将键填充到键盘缓冲区中以供 Windows 处理。 DRapp 提供了 ON KEY LABEL,它允许您在用户单击键之前设置击键的功能。
但我不确定你首先要完成什么。
里克·舒默 - VFP MVP
【讨论】:
在键标签上 F5 _Screen.ActiveForm.cmdnew.Click
加载事件 -- 主窗体 This.KeyPreview=.T.
KeyPress 事件 -- 主窗体
LPARAMETERS nKeyCode, nShiftAltCtrl
If m.nKeyCode = -4 && F5
Nodefault
Thisform.cmdNew.Click()
Endif
Public oMyGVar
oMyGVar = Thisform
ON KEY LABEL F1 oMyGVar.SomeFunction()
【讨论】: