Keybord Combination

4 отговора 211 прегледа
#1

Keybord Combination

Здравейте имам един въпрос дали някой знае как да се направи клавишна комбинация да речем от Алт + 'Л' + 'Е' + 'К' пробвах с

if ( ssAlt in Shift ) and ( Key = Ord('L') ) and ( btnSaveAll.Enabled ) then
if ( ssAlt in Shift ) and ( Key = Ord('E') ) then
if ( ssAlt in Shift ) and ( Key = Ord('X') ) then

но за съжаление не сработи!

Благодаря предварително !

Отговор
в отговор на Combination #2

Няма как да сработи - трябва да ги "броиш"

Няма как да сработи - трябва да ги "броиш": да прехванеш и натискането и отпускането и да сумираш натисканията (трябва да е като флагове или ОР на битове), да вадиш отпусканията (маскираш флаговете, битовете) и да проверяваш всеки път дали резултата е тва което те грее.

Отговор
в отговор на Combination #3

Re: Keybord Combination

Ето какво измислих набързо (предполагам, че всеки може да го оптимизира).

var
MyKey:byte;
MaskMyKey:boolean;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
MaskMyKey:=FALSE;
if ( ssAlt in Shift ) and ( Key = Ord('L') ) then
MyKey:=1
else
if ( ssAlt in Shift ) and ( Key = Ord('E') ) and (MyKey=1) then
MyKey:=2
else
if ( ssAlt in Shift ) and ( Key = Ord('X') ) and (MyKey=2) then
begin
MyKey:=0;
MaskMyKey:=TRUE;
end
else
MyKey:=0;
Label1.Caption:=BoolToStr(MaskMyKey,TRUE);
end;

Редактирано от TRN на

Отговор
в отговор на Combination #4

Re: Keybord Combination

Благодаря много ми помогнахте и двамата за идеята и за примера !!!!

Отговор
в отговор на Combination #5

Хубаво, ама ако МайКей се ОР-ва ще е идеално

Хубаво, ама ако МайКей се ОР-ва ще е идеално.
Само трябва да му се намери подходящ момент за нулиране и след това вместо
MyKey:=1; ===> MyKey:=MyKey or 1;
MyKey:=2; ===> MyKey:=MyKey or 2;
if MyKey=3 ...

Освен, ако не ви харесва ефекта - да се следи и последователността на натискане на бутоните (Алт+К+Л или Алт+Л+К)

Отговор