【问题标题】:Foxpro Keyboard commandFoxpro 键盘命令
【发布时间】:2014-06-06 13:02:29
【问题描述】:

当我使用键盘命令时,它在 Foxpro 调试环境中工作,但是当我构建 .exe 时,键盘命令不起作用。当我聚焦 Foxpro 表单时,即使按下 F1 也没有任何反应,直到我将焦点从正在运行的应用程序上移开?

例子

键盘 F1

在调试非.exe 模式下效果很好,但在.exe 模式下什么都不做?

【问题讨论】:

    标签: foxpro


    【解决方案1】:

    我认为这是设计使然。帮助文件不是 exe 的一部分,它是开发环境的一部分。因此,在 FoxPro 开发环境之外运行应用程序时,帮助文件不可用。

    【讨论】:

    【解决方案2】:

    虽然@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。

    【讨论】:

      【解决方案3】:

      你在哪里有 KEYBOARD 命令?是在表单上的按钮 Click() 中,还是在其他方法中?

      KEYBOARD 命令将键填充到键盘缓冲区中以供 Windows 处理。 DRapp 提供了 ON KEY LABEL,它允许您在用户单击键之前设置击键的功能。

      但我不确定你首先要完成什么。

      里克·舒默 - VFP MVP

      【讨论】:

        【解决方案4】:

        完美但不安全

        在键标签上 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()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-09
          • 2011-06-06
          相关资源
          最近更新 更多