Регистрация ввода в TEdit (Delphi/Free pascal)

У меня есть поле TEdit, и мне нужно вызвать действие из списка действий при нажатии кнопки ENTER/RETURN, когда он сфокусирован на нем (как в большинстве поисковых систем). Использование Lazarus 0.9.28.2-12 и Ubuntu 11.04


person Archer    schedule 01.05.2011    source источник


Ответы (2)


Обработайте событие OnKeyDown и проверьте наличие Key=VK_RETURN.

person David Heffernan    schedule 01.05.2011
comment
Да, а затем вы также можете просмотреть и удалить сообщения клавиатуры, чтобы звуковой сигнал исчез. Или вы можете использовать OnKeyPress с ord(Key) = VK_RETURN. - person Andreas Rejbrand; 02.05.2011
comment
Спасибо, ребята, это сработало. Но перед использованием VK_RETURN вы также должны включить LCLType lib: uses LCLtype; - person Archer; 02.05.2011

Лучше использовать OnKeyUp вместо OnKeyDown. Причина этого в том, что если вы нажмете Enter, он может сгенерировать много событий (фактически он будет генерироваться до тех пор, пока не будет нажата клавиша), что нежелательно. Использование OnKeyUp и проверка того, является ли ключ VK_RETURN, будет намного лучше и вызовет только 1 событие, пока не произойдет следующий выпуск.

person Javor    schedule 04.05.2011
comment
стандарт заключается в том, что действия должны запускаться при нажатии клавиши, а не при нажатии клавиши. Использование клавиши вверх неправильно. - person David Heffernan; 04.05.2011