Почти всегда требуется обработка нажатий клавиш "вверх-вниз" для смены фокуса ввода - мои "тетки-юзеры" боются мышей, да и сам я не любитель комбинаций мышь-клавиатура.
procedure TfmAbProps.edNameKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if (Key=vk_down) and not (ssAlt in Shift) // здесь обработка для "выпадающих" окошек типа TRxDBCalcEdit then beginKey:=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 beginif not (ActiveControl as TRxDBLookupCombo).IsDropDown then beginKey:=0;selectnext(ActiveControl,false,true);end;end; end; end; |
С уважением, [000796]