Содержание материала

  Как-то бухгалтер, который пользовался моей программой, заявил, что ему не удобно перескакивать пустые поля в форме кнопкой Tab, и что намного удобнее это делать обычным Enter-ом. Предлагаю посмотреть, как я решил эту проблемму.

 Совместимость: Все версии Delphi. Автор: Khaled Shagrouni

 Пример обработчика события:

Code:

procedure Tform1.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

var

ACtrl: TWinControl;

begin

if key = 13 then

   begin

     ACtrl := ActiveControl;

     if ACtrl is TCustomMemo then exit;

     repeat

       ACtrl:= FindNextControl(ACtrl,true,true,false);

     until (ACtrl is TCustomEdit) or

     (ACtrl is TCustomComboBox) or

     (ACtrl is TCustomListBox) or

     (ACtrl is TCustomCheckBox) or

     (ACtrl is TRadioButton);

     ACtrl.SetFocus ;

   end;

end;

  

Не забудьте установить свойство формы KeyPreview в true.

 Как Вы можете видеть; этот код использует функцию FindNextControl, которая ищет следующий свободный контрол.

 так как все формы в моём приложении наследуются от одной, то достаточно поместить этот код в главную форму и после этого все формы будут реагировать на нажатие Enter подобным образом.

 Существует множество методов решения этой проблемы, но самый быстрый способ, это перехват нажатия клавиш, перед тем как их получит форма:

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить