Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Значащие символы [D6]


Шурик Ш ©   (2002-09-26 16:16:00) 

В событие OnKeyPress передается параметр Key. Подскажите пожалуйста, как можно "отбросить все лишние" символы (Esc, Enter, Tab...)?


pusrg   (2002-09-26 16:43:00) [1]

Событие OnKeyPress наступает, если компонент находится в фокусе, при нажатии пользователем клавиши символа. Параметр Key в обработчике этого события имеет тип Char и соответствует символу нажатой клавиши. При этом различаются симолы в верхнем и нижнем регистрах и символы кириллицы и латинские. Клавиши, не отражаемые в кодах ASCII (функциональные клавиши и такие, как Shift, Alt, Ctrl), не вызывают этого события. Поэтому нажатие таких комбинаций клавиш, как, например, Shift-A, генерирует только одно событие OnKeyPress, при котором параметр Key равен "A". Для того, чтобы распознавать клавиши, не соответствующие символам, или комбинации клавиш, надо использовать обработчики событий OnKeyDown и OnKeyUp.

Следует отметить, что событие OnKeyPress заведомо наступает, если нажимается только клавиша символа или клавиша символа при нажатой клавише Shift. Если же клавиша символа нажимается одновременно с какой-то из вспомогательных клавиш, то событие OnKeyPress может не наступить (произойдут только события OnKeyDown при нажатии и OnKeyUp при отпускании) или, если и наступит, то укажет на неверный символ. Например, при нажатой клавише Alt событие OnKeyPress при нажатии символьной клавиши не наступает. А при нажатой клавише Ctrl событие OnKeyPress при нажатии символьной клавиши наступает, но символ не распознается.


Шурик Ш   (2002-09-26 16:21:00) [2]

Т.е. первые 31 символ - системные?


TTCustomDelphiMaster   (2002-09-26 16:20:00) [3]

if #31<key then


qube   (2002-09-26 16:18:00) [4]

Заведи константу -- множество лишних (или нелишних, смотря, чего больше) символов и проверяй каждый поступивший символ на вхождение.


Mike Kouzmine   (2002-09-26 16:18:00) [5]

if not (Key in ["0","1","2"]) then Key := #0


Шурик Ш   (2002-09-26 16:17:00) [6]

"Отбросить" - в смысле, игнорировать их.


Наверх

Титульная страница Поиск, карта сайта Написать письмо