![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
![]() Есть окно ввода, допустимый язык - английский. Если пишу на русском, то меняется раскладка. Как сделать чтобы уже нажатый символ тоже изменился?
|
#2
|
||||
|
||||
![]() Мне это видится так:
Всякий раз как будет нажат любой символ-разделитель слов, вы очищаете переменную, и последующие нажатия будут формировать слово в переменной. Вот это слово вы и можете гонять в разной раскладке как вам нужно. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
![]() Кажется я неправильно описал проблему
![]() OnKeyPress Edit'a: Код:
if GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, nil)) <> 67699721 then begin KL := LoadKeyboardLayout('00000409', 0); ActivateKeyboardLayout(KL, 1); // устанавливаем aнгл язык Key := #0; ShowMessage('Язык ввода изменен на английский.'); end; |
#4
|
||||
|
||||
![]() Ну ты-же сам затираешь символ в буфере:
Код:
Key := #0; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
![]() Потому и стираю, что иначе остается русский...
чем мне заменить это присвоение, чтобы получить правильный символ? |
#6
|
||||
|
||||
![]() Вот примерно таким путем можно сделать:
Код:
Const CharCount = 32; KeybLayout: record Eng,Rus: String[CharCount]; end = (Eng:('qwertyuiop[]asdfghjkl;''zxcvbnm,.'); Rus:('йцукенгшщзхъфывапролджэячсмитьбю')); ... procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); Var i: Integer; begin for i := 1 to CharCount do case GetKeyboardLayout(0) shr $10 of 1033: if KeybLayout.Eng[i] = Key //Английская раскладка then begin Key := KeybLayout.Rus[i]; Break; end; 1049: if KeybLayout.Rus[i] = Key //Русская раскладка then begin Key := KeybLayout.Eng[i]; Break; end; end end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
Kpyc (31.05.2012)
|