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

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

Перехват нажатия русской буквы [D5, Win2k]


sen ©   (2002-11-15 08:59:00) 

Добрый день
Подскажите, пожалуйста, как наилучшим способом определить, какая русская буква была нажата, обработав событие OnKeyDown формы?
То есть, например, если нажать клавиша "T" получить букву "Е",
А нажав последовательно "QWERT", получить "ЙЦУКЕ".
Можно, конечно, получив код клавиши, сопоставить два массива: русских и английских букв.
Но есть ли более интересный способ?
Типа виртуального ввода. Чтоб текст шел не в Едит, а в некую виртуальную структуру, которую можно было отобразить позже.
Спасибо.


Victor_Cr   (2002-11-15 11:42:00) [1]

Почитай ФАКи... По теме програмного изменения раскладки Рус/Eng


sen   (2002-11-15 09:56:00) [2]

Спасибо, но не совсем то.
Пусть на форме нет никаких компонент.
Мы начинаем нажимать клавиши.
В некоторой переменной получаем набор русских! символов, соответствующих нажатым клавишам.


Victor_Cr   (2002-11-15 09:23:00) [3]

Да можно, приведеный текст - ввод пароля в едит. Он скрывает пароль т.к. место него выводиться уже другой текст, пароль считываеться в строку с которой и идет работа дальше:


procedure TPasswordDlg.edtPasswordKeyPress(Sender: TObject; var Key: Char);
const
St: string = "Suck in my, Baby... Password is hide for you...";
var
KeyInt: Integer;
begin
KeyInt := Ord(Key);
case KeyInt of
VK_DELETE://Delete key
begin
edtPassword.Clear;
sPassword := "";
end;
9 : Key := #0;//Tab key
13: bbnLoginClick(Sender);//Enter key
27: bbnCancelClick(Sender);//Escape key
else
if Key in [" ","0".."9","A".."z"] then
begin
sPassword := sPassword + Key;
Key := St[(Length(edtPassword.Text)+1) mod (Length(ST)+1)];// в этом месте идет вывод символа в "едит".
end;
end;
end;


Вообщем перехватываешь в обработчике ОнКейПресс(ОнКейДаун) код клавиши. И переприсваеваешь его...


Наверх

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