Обрабатываю событие
Edit1KeyPress(Sender: TObject; var Key: char);
При этом делаю выдачу сообщения
ShowMessage(Key);
Когда нажимаю латинскую букву - сообщение нормальное - что нажал - то получил. А когда русскую - пустое окно сообщения. Как мне определить что нажата русская буква и какая это буква?
Определить, что нажата русская буква.
Модератор: Модераторы
Обрабатывай
Edit1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
Edit1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
а событие UTF8PressKey не канает?
**
пока писал опередили уже
ну вобщем если все-так нужно событие keyPress без приставки UTF8, то можно и так символ показать:
(событие keypress срабатывает обычно после UTF8KeyPress)
Код: Выделить всё
procedure TForm1.Edit1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
begin
showMessage(UTF8Key);
end; **
пока писал опередили уже
ну вобщем если все-так нужно событие keyPress без приставки UTF8, то можно и так символ показать:
Код: Выделить всё
showmessage(SysToUTF8(key)); (событие keypress срабатывает обычно после UTF8KeyPress)
Всё получилось. Спасибо.
Кстати если нажать Enter на KeyPad, событие UTF8KeyPress не обрабатывается. То ли баг, то ли так и задумано. Я дублирую нажатие Enter в onKeyPress.
Как то писал обработку (вот только не помню где и для чего), использовал оба события. Дело в том что UTF8KeyPress реагирует не на все нажатия и это видно в коде его реализации 
Mr.Smart писал(а):UTF8KeyPress реагирует не на все нажатия
Естественно! Он же обрабатывает UTF8 кодировку, а не функциональные клавиши
