Microsoft KB Archive/249700

= PRB: Hot Keys of a ToolBar ActiveX Control are not Active =

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.



Steps to Reproduce Behavior
 Create a new form and add a Microsoft ToolBar ActiveX control. Right-click the ToolBar ActiveX control, and then select the ToolBar Properties menu option.</li> Click the Buttons tab of the ToolBar Properties dialog box.</li> Click Insert Button and insert &Alpha in the Caption text box.</li> Click Insert Button again and enter &Beta in the Caption text box.</li> Click the Apply command button.</li> Click the OK command button to close the ToolBar Properties dialog box.</li>  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 </li> Save and run the form. Click the Alpha and Beta keys of the ToolBar control and note that the wait window messages display.</li> Press ALT+A, and then press ALT+B. Note that no wait window messages appear.</li>  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)) </li>  Add the following code to the Unload method of the form: ON KEY LABEL ALT+A ON KEY LABEL ALT+B </li> Save and run the form. Press ALT+A, and then press ALT+B. Note that the wait window messages now appear.</li></ol>

<div class="references_section">