Microsoft KB Archive/249700

From BetaArchive Wiki
< Microsoft KB Archive
Revision as of 12:53, 21 July 2020 by X010 (talk | contribs) (Text replacement - """ to """)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Article ID: 249700

Article Last Modified on 5/12/2003



APPLIES TO

  • Microsoft Visual FoxPro 3.0 Standard Edition
  • Microsoft Visual FoxPro 3.0b Standard Edition
  • Microsoft Visual FoxPro 5.0 Standard Edition
  • Microsoft Visual FoxPro 5.0a
  • Microsoft Visual FoxPro 6.0 Professional Edition



This article was previously published under Q249700

SYMPTOMS

Hot keys for buttons defined on a ToolBar control, from the Microsoft Common Controls ActiveX control (mscomctl.ocx), that are used in a Visual FoxPro form are not active when the form is executed.

CAUSE

The ToolBar ActiveX control does not have SetFocus, GotFocus, or LostFocus events and thus cannot receive focus. Since the ToolBar ActiveX control cannot receive focus, pressing the ALT key plus the underlined character of the ToolBar button(s) has no effect.

RESOLUTION

There are two ways you can work around this issue.

  • Issue an ON KEY LABEL command similar to the following code snippet:

    ON KEY LABEL ALT+A _SCREEN.ACTIVEFORM.buttonclick(_SCREEN.ACTIVEFORM.BUTTONS(1))
    ON KEY LABEL ALT+B _SCREEN.ACTIVEFORM.buttonclick(_SCREEN.ACTIVEFORM.BUTTONS(2))
                        

    -or-

  • Another, somewhat more cumbersome workaround for this issue involves checking for KeyPress events in the KeyPress method of a form, similar to the following code snippet:

    DO CASE
       CASE nKeyCode=30
          THISFORM.olecontrol1.buttonclick(THISFORM.olecontrol1.BUTTONS(1))
       CASE nKeyCode=48
          THISFORM.olecontrol1.buttonclick(THISFORM.olecontrol1.BUTTONS(2))
    ENDCASE
                        


STATUS

This behavior is by design.

MORE INFORMATION

Steps to Reproduce Behavior

  1. Create a new form and add a Microsoft ToolBar ActiveX control.
  2. Right-click the ToolBar ActiveX control, and then select the ToolBar Properties menu option.
  3. Click the Buttons tab of the ToolBar Properties dialog box.
  4. Click Insert Button and insert &Alpha in the Caption text box.
  5. Click Insert Button again and enter &Beta in the Caption text box.
  6. Click the Apply command button.
  7. Click the OK command button to close the ToolBar Properties dialog box.
  8. Open the ButtonClick method of the ToolBar control and add the following code:

    DO CASE
       CASE BUTTON.INDEX=1
          WAIT WINDOW "Alpha" NOWAIT
       CASE BUTTON.INDEX=2
          WAIT WINDOW "Beta" NOWAIT
    ENDCASE
                        
  9. Save and run the form. Click the Alpha and Beta keys of the ToolBar control and note that the wait window messages display.
  10. Press ALT+A, and then press ALT+B. Note that no wait window messages appear.
  11. Add the following code to the Load method of the form:

    ON KEY LABEL ALT+A _SCREEN.ACTIVEFORM.buttonclick(_SCREEN.ACTIVEFORM.BUTTONS(1))
    ON KEY LABEL ALT+B _SCREEN.ACTIVEFORM.buttonclick(_SCREEN.ACTIVEFORM.BUTTONS(2))
                        
  12. Add the following code to the Unload method of the form:

    ON KEY LABEL ALT+A
    ON KEY LABEL ALT+B
                        
  13. Save and run the form. Press ALT+A, and then press ALT+B. Note that the wait window messages now appear.


REFERENCES

(c) Microsoft Corporation 1999, All Rights Reserved. Contributions by John Desch, Microsoft Corporation.



Additional query words: KBDSE

Keywords: kbcodesnippet kbprb KB249700