Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.05.2009, 18:04
PIF85 PIF85 вне форума
Прохожий
 
Регистрация: 18.12.2008
Сообщения: 17
Репутация: 10
По умолчанию Переключение раскладки клавиатуры

Здравствуйте! Скажите пожалуйста, как сделать, чтобы при щелчке на RichEdit'е менялась раскладка клавиатуры на латиницу.
Заранее благодарен!
Ответить с цитированием
  #2  
Старый 13.05.2009, 18:25
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Как вариант, можно сделать что-то вроде этого :
Код:
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  
Старый 13.05.2009, 18:32
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Поиск по форуму как всегда рулит. Вот почитай.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #4  
Старый 13.05.2009, 19:14
PIF85 PIF85 вне форума
Прохожий
 
Регистрация: 18.12.2008
Сообщения: 17
Репутация: 10
По умолчанию

Спасибо всем огромное!
Ответить с цитированием
  #5  
Старый 20.05.2009, 22:51
Аватар для SCrat.ORS
SCrat.ORS SCrat.ORS вне форума
Активный
 
Регистрация: 20.02.2007
Адрес: Мой адрес не дом и не улица, мой адрес 0x7С00
Сообщения: 208
Версия Delphi: 2006
Репутация: 884
По умолчанию

А вот ещё вопрос.
Пищу индикатор языка клавиатуры (Как в Windows 9X) чистый WinAPI (windows, shellapi), Модушь Graphics ! неиспользую ! для экономии обьёма ехе - файла.
Висит иконка в трее с изображением языка ввода, переключаешь раскладку (Системно: Alt+Shift, Ctrl+Shift), иконка перерисовывается. В разных окнах - раскладка разная (Типа в Word'e - пишем по-русски, а в Блокноте - по-английски,.. ) вообщем это все работает, определяет раскладку в разных окнах нормально.
Кликаем по иконке левой кнопкой мыши - вылезает менюха с доступными языками (на текущем стоит Чек), вообщем все как положено. Но вот проблема, когда кликаешь по иконке в трее левой кнопкой, Фокус текущего окна (того на котором хотим сменить язык) теряется, меняем раскладку (Выбираем на выпавшей менюхе) , в итоге раскладка меняется на иконке (на её Хендле), а окно нужное - без фокуса, поэтому осталось не затронутым.

Вот собсна вопросы:
1. Как сделать PopupMenu так, чтоб при его вызове, текушее окно не теряло фокуса?
2. Как убрать меню (оно не уберается пока по нему не кликнешь), если кликаешь не по нему?
Ответить с цитированием
  #6  
Старый 22.09.2010, 16:19
Rikki-Tikki Rikki-Tikki вне форума
Прохожий
 
Регистрация: 22.09.2010
Сообщения: 7
Репутация: 10
По умолчанию

здравствуйте!

у меня при нажатии одного из radiobotton меняется язык ввода так:
Код:
LoadKeyboardLayout('00000409',KLF_ACTIVATE)	;
русский и английски меняются и пишутся правильно.
с немецким проблема:
хоть системный значок и меняется на "DЕ", все равно символы выдаются латинские, а буквы эсцет и о-умлаут не выводятся
как думаете, как можно решить эту проблему? (все кнопки поперепробовала, все равно эти буквы не вывелись)
заранее благодарю)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:10.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter