Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];

Вниз

Перехват нажатия русской буквы   Найти похожие ветки 

 
sen   (2002-11-15 08:59) [0]

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


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

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


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;


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


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

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


 
Victor_Cr   (2002-11-15 11:42) [3]

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



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.033 c
7-99381
lmd_sting
2002-10-23 14:09
2002.12.30
Как сделать таймер с задержкой меньше 1 мс?


14-99348
Malder
2002-12-11 00:02
2002.12.30
Цена на AMD 366


3-98981
alxx
2002-12-09 12:11
2002.12.30
Проблема с триггером


8-99207
Porolonchick
2002-09-12 15:27
2002.12.30
Формы.


3-99025
Whippi
2002-12-09 15:01
2002.12.30
Как програмно создать алиас в BDE?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский