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

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

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

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

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2023 - All Rights Reserved - www.delphirus.com