- Захотел ты беcпредел? Так нажми контрол+алт+дел!
Почти всегда требуется обработка нажатий клавиш "вверх-вниз" для смены фокуса
ввода - мои "тетки-юзеры" боются мышей, да и сам я не любитель комбинаций
мышь-клавиатура.
procedure TfmAbProps.edNameKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
beginif (Key = vk_down) andnot (ssAlt in Shift)
{// здесь обработка для "выпадающих" окошек типа TRxDBCalcEdit}thenbegin
Key := 0;
SelectNext(Sender as TWinControl, true, true);
endelseif Key = vk_up thenbegin
Key := 0;
SelectNext(Sender as TWinControl, false, true);
end;
end;
Для элементов редактирования типа TDbEdit, TRxDBCalcEdit or TDBDateEdit
назначим
OnKeyDown:=edNameKeyDown
Сложнее с типами вроде TRxDBLookupCombo. Наш прежний обработчик для них не
подходит. Я пытался изменить характер TRxDBLookupCombo - но вовремя опомнился -
есть же FormKeyDown;
procedure TfmAbProps.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
beginif (ActiveControl is TRxDBLookupCombo) thenbeginif Key = vk_down thenbeginifnot (ssAlt in Shift) andnot// здесь нельзя обработать нажатие при вызове "выпадающего"
(ActiveControl as TRxDBLookupCombo).IsDropDown thenbegin// и в случае уже "выпвшего"
Key := 0;
selectnext(ActiveControl, true, true);
end;
endelseif Key = vk_up thenbeginifnot (ActiveControl as TRxDBLookupCombo).IsDropDown thenbegin
Key := 0;
selectnext(ActiveControl, false, true);
end;
end;
end;
end;
Статья Обработка нажатий клавиш вверх-вниз раздела ОС и Железо Клавиши может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.