Keybord Combination
4 отговора
211 прегледа
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
но за съжаление не сработи!
Благодаря предварително !
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
но за съжаление не сработи!
Благодаря предварително !
Няма как да сработи - трябва да ги "броиш"
Няма как да сработи - трябва да ги "броиш": да прехванеш и натискането и отпускането и да сумираш натисканията (трябва да е като флагове или ОР на битове), да вадиш отпусканията (маскираш флаговете, битовете) и да проверяваш всеки път дали резултата е тва което те грее.
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 на
Re: Keybord Combination
Благодаря много ми помогнахте и двамата за идеята и за примера !!!!
Хубаво, ама ако МайКей се ОР-ва ще е идеално
Хубаво, ама ако МайКей се ОР-ва ще е идеално.
Само трябва да му се намери подходящ момент за нулиране и след това вместо
MyKey:=1; ===> MyKey:=MyKey or 1;
MyKey:=2; ===> MyKey:=MyKey or 2;
if MyKey=3 ...
Освен, ако не ви харесва ефекта - да се следи и последователността на натискане на бутоните (Алт+К+Л или Алт+Л+К)
Само трябва да му се намери подходящ момент за нулиране и след това вместо
MyKey:=1; ===> MyKey:=MyKey or 1;
MyKey:=2; ===> MyKey:=MyKey or 2;
if MyKey=3 ...
Освен, ако не ви харесва ефекта - да се следи и последователността на натискане на бутоните (Алт+К+Л или Алт+Л+К)