Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Обработка нажатий клавиш вверх-вниз

Автор: Галимарзанов Фанис

- Захотел ты беcпредел? Так нажми контрол+алт+дел!

Почти всегда требуется обработка нажатий клавиш "вверх-вниз" для смены фокуса ввода - мои "тетки-юзеры" боются мышей, да и сам я не любитель комбинаций мышь-клавиатура.


 procedure TfmAbProps.edNameKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
 begin
   if (Key = vk_down) and
     not (ssAlt in Shift)
       {// здесь обработка для "выпадающих" окошек типа TRxDBCalcEdit} then
   begin
     Key := 0;
     SelectNext(Sender as TWinControl, true, true);
   end
   else if Key = vk_up then
   begin
     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);
 begin
   if (ActiveControl is TRxDBLookupCombo) then
   begin
     if Key = vk_down then
     begin
       if not (ssAlt in Shift) and not
         // здесь нельзя обработать нажатие при вызове "выпадающего"
       (ActiveControl as TRxDBLookupCombo).IsDropDown then
       begin // и в случае уже "выпвшего"
         Key := 0;
         selectnext(ActiveControl, true, true);
       end;
     end
     else if Key = vk_up then
     begin
       if not (ActiveControl as TRxDBLookupCombo).IsDropDown then
       begin
         Key := 0;
         selectnext(ActiveControl, false, true);
       end;
     end;
   end;
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS