|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Переключение раскладки клавиатуры
Здравствуйте! Скажите пожалуйста, как сделать, чтобы при щелчке на RichEdit'е менялась раскладка клавиатуры на латиницу.
Заранее благодарен! |
#2
|
|||
|
|||
Как вариант, можно сделать что-то вроде этого :
Код:
function SetActiveKeyboardLayout(Mode : integer) : Boolean; //Переключение клавиатуры. //Mode: =0 - Рус, =1 - Лат, =2 - Укр var Kbd: HKL; begin Result:=FALSE; Kbd:=0; if Mode<=0 then Kbd:=LoadKeyboardLayout('00000419', 0); //RU if Mode=1 then Kbd:=LoadKeyboardLayout('00000409', 0); //Lat if Mode>=2 then Kbd:=LoadKeyboardLayout('00000422', 0); //Ukr if Kbd<>0 then begin ActivateKeyboardLayout(Kbd,0); Result:=TRUE; end; { Идентификатор Пояснение 037 EBCDIC. 437 MS-DOS (США). 500 EBCDIC "500V1". 708 Арабская (ASMO 708). 709 Арабская (ASMO 449+, BCON V4). 710 Арабская (Transparent Arabic). 720 Арабская (Transparent ASMO). 737 Греческая (ранее 437G). 775 Балтийская. 850 MS-DOS многоязыковая (Latin I). 852 MS-DOS восточноевропейская (Latin II). 855 Кириллица IBM. 857 Турецкая IBM. 860 MS-DOS (Португалия). 861 MS-DOS (Исландия). 862 Еврейская. 863 MS-DOS (Французская Канада). 864 Арабская. 865 MS-DOS скандинавская. 866 MS-DOS русская. 869 Современная греческая IBM. 874 Тайская. 875 EBCDIC. 932 Японская. 936 Китайская (КНР, Сингапур). 949 Корейская. 950 Китайская (Тайвань, Гонконг). 1026 EBCDIC. 1200 Unicode (BMP или ISO 10646). 1250 Windows 3.1 (Восточная Европа). 1251 Windows 3.1 (Кириллица). 1252 Windows 3.1 США (ANSI). 1253 Греческая Windows 3.1. 1254 Турецкая Windows 3.1. 1255 Еврейская. 1256 Арабская. 1257 Балтийская. 1361 Корейская (Johab). 10000 Macintosh латинская. 10001 Macintosh японская. 10006 Macintosh греческая I. 10007 Macintosh кириллическая. 10029 Macintosh Latin 2. 10079 Macintosh (Исландия). 10081 Macintosh турецкая. См. также GetACP, GetCPInfo, GetOEMCP. } end; |
#3
|
||||
|
||||
Поиск по форуму как всегда рулит. Вот почитай.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#4
|
|||
|
|||
Спасибо всем огромное!
|
#5
|
||||
|
||||
А вот ещё вопрос.
Пищу индикатор языка клавиатуры (Как в Windows 9X) чистый WinAPI (windows, shellapi), Модушь Graphics ! неиспользую ! для экономии обьёма ехе - файла. Висит иконка в трее с изображением языка ввода, переключаешь раскладку (Системно: Alt+Shift, Ctrl+Shift), иконка перерисовывается. В разных окнах - раскладка разная (Типа в Word'e - пишем по-русски, а в Блокноте - по-английски,.. ) вообщем это все работает, определяет раскладку в разных окнах нормально. Кликаем по иконке левой кнопкой мыши - вылезает менюха с доступными языками (на текущем стоит Чек), вообщем все как положено. Но вот проблема, когда кликаешь по иконке в трее левой кнопкой, Фокус текущего окна (того на котором хотим сменить язык) теряется, меняем раскладку (Выбираем на выпавшей менюхе) , в итоге раскладка меняется на иконке (на её Хендле), а окно нужное - без фокуса, поэтому осталось не затронутым. Вот собсна вопросы: 1. Как сделать PopupMenu так, чтоб при его вызове, текушее окно не теряло фокуса? 2. Как убрать меню (оно не уберается пока по нему не кликнешь), если кликаешь не по нему? |
#6
|
|||
|
|||
здравствуйте!
у меня при нажатии одного из radiobotton меняется язык ввода так: Код:
LoadKeyboardLayout('00000409',KLF_ACTIVATE) ; с немецким проблема: хоть системный значок и меняется на "DЕ", все равно символы выдаются латинские, а буквы эсцет и о-умлаут не выводятся как думаете, как можно решить эту проблему? (все кнопки поперепробовала, все равно эти буквы не вывелись) заранее благодарю) |