Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Почти всегда требуется обработка нажатий клавиш "вверх-вниз" для смены фокуса ввода - мои "тетки-юзеры" боются мышей, да и сам я не любитель комбинаций мышь-клавиатура.
procedureTfmAbProps.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;
procedureTfmAbProps.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
;