Re: Hot/Accelerator Keys
- Posted by jjnick at cvn.com May 23, 2001
- 413 views
Okay, maybe there is something wrong somewhere . . . I have a pushbutton called "Remove", the accelerator being "Alt-R", yet the button is not pushed when I press "Alt-R", the focus just changes to the button . . . This happens to all my pushbuttons in the window . . . The focus changes to the desired button, but the button is not pressed . . . ----- Original Message ----- From: "Derek Parnell" <ddparnell at bigpond.com> To: "EUforum" <EUforum at topica.com> Subject: RE: Hot/Accelerator Keys > > Hi "jjnick at cvn.com", > > > Okay, I give up, how does one implement Hot/Accelerator keys? > > I searched > > the mailing list to no avail. Apparently it must be an easy > > excercise . . > > .? I know about using the "&" symbol to precede a letter in > > the control > > definitions, but how do I access this in code? Please tell > > me I don't have > > to use the onKeyDown event! > > what are you trying to do with hot keys? > > When you say "how do I access this in code?", what is the "this" you are > referring to? Are you asking how to know which are the hot keys associated > with a given control? Or are you wanting to know which hot key is pressed? > Or are you trying the get your code to react to a hotkey press? > > To associate a hot key with a specific control use ... > > registerHotKey(id, keycode) > > eg. > -- Make the Alt-F9 key "press" the button. > registerHotKey( btnClose, VK_F9) > > To get a list of hot keys and the associated controls, use ... > > sequence rdata > -- Get the list of controls for this parent window that have hots keys, > -- and a list of the hotkey keycodes. > rdata = getControlInfo( myWin, {CONTROLINFO_hotkey_ids, > CONTROLINFO_hotkey_keys}) > > for i = 1 to length(rdata[1]) do > -- Control rdata[1][i] has hotkey rdata[2][i] > end for > > A hotkey sets the focus to the control that owns the hotkey, thus causing a > GotFocus event. If that control is a button, it also causes the Click event > to happen. Thus normally one codes a handler for GotFocus or Click to trap > hotkey presses. But it doesn't distinguish between a hotkey and a normal > invocation. > > Do you need to know if either of these two events were caused by a hotkey > rather than the normal triggering event, such as a TAB key or MouseClick or > SpaceBar for buttons? If so, you'd have to use the KeyDown event to catch > that. > > ----------- > cheers, > Derek Parnell >