Как определить нажаты ли клавиши Shift, Alt или Ctrl в какой-либо момент времени
|
Пpиходит пpогpаммист к пианистy - посмотpеть на новый pояль.
Долго ходит вокpyг, хмыкает, потом заявляет:
- Клава неyдобная - всего 84 клавиши, половина фyнкциональных,
ни одна не подписана, хотя... шифт нажимать ногой - оpигинально.
|
В приведенном примере показано как определить нажата ли клавиша Shift при выборе строчки меню. Пример также содержит функции проверки состояния клавиш Alt, Ctrl.
function CtrlDown : Boolean;
var
State : TKeyboardState;
begin
GetKeyboardState(State);
Result := ((State[vk_Control] and 128) <> 0);
end;
function ShiftDown : Boolean;
var
State : TKeyboardState;
begin
GetKeyboardState(State);
Result := ((State[vk_Shift] and 128) <> 0);
end;
function AltDown : Boolean;
var
State : TKeyboardState;
begin
GetKeyboardState(State);
Result := ((State[vk_Menu] and 128) <> 0);
end;
procedure TForm1.MenuItem12Click(Sender: TObject);
begin
if ShiftDown then
Form1.Caption := 'Shift'
else
Form1.Caption := '';
end;
|
|