2010. augusztus 18., szerda
How to disable accelerators without ALT
Problem/Question/Abstract:
I have a tab control with a tab called "Polic&y Info" with the ALT-Y key set to switch to it. If I am on a TCheckBox on any tab and press only the "Y" key, the tab control switches pages.
Answer:
This is nothing specific to a checkbox, it is standard Windows behaviour. If the control having focus does not process character input then ALT is not needed to have a character act as an accelerator. To fix this, add a handler for CM_DIALOGCHAR to your form:
private
{ Private declarations }
procedure cmDialogChar(var msg: TCMDialogChar); message CM_DIALOGCHAR;
procedure TForm1.cmDialogChar(var msg: TCMDialogChar);
begin
if ((msg.keydata and $20000000) = 0) then
msg.result := 1 { ALT not down, eat key }
else
inherited;
end;
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése