![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Значащие символы [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]"Отбросить" - в смысле, игнорировать их.