Автопереключение раскладки

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Автопереключение раскладки

Сообщение Андрей »

Прошу прощения если уже было, тогда пошлите на.... ссылочку
Как автоматически переключать с РУС на ENG при переходе в определенное поле и переключать наоборот при выходе с него ?
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: Автопереключение раскладки

Сообщение Андрей »

Необязательно переключать раскладку, может быть перехватывать нажатия клавиш и преобразовывать каждый символ на лету ?
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Автопереключение раскладки

Сообщение Дед Пахом »

переключение реализуется с помощью WinAPI LoadKeyboardLayout(), ActivateKeyboardLayout(), UnloadKeyboardLayout()
С уважением, ДП
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: Автопереключение раскладки

Сообщение Андрей »

Спасибо !
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Автопереключение раскладки

Сообщение kreator »

Давным-давно выкладывали пример и удобную функцию.
Описание Win-API функций:

Код: Выделить всё

    GetKeyboardLayout(DWORD),HKL,pascal
    GetKeyboardLayoutNameA(*LPSTR),BOOL,pascal,raw
Функция переключения:

Код: Выделить всё

HKL                     EQUATE(UNSIGNED)

SwitchKBD Procedure (KBDLayout)
AKL  HKL
TMP  CSTRING(20)
loc:i Long

 Code
 loc:i = GetKeyboardLayoutNameA(Tmp)
 if Tmp<>KBDLayout
   AKL = ActivateKeyBoardLayout(1,0)
 end
Пример использования:

Код: Выделить всё

case field()
  of ?COU:NameLat
  orof ?COU:FullNameLat
    SwitchKBD(Latin)
  else
    SwitchKBD(Russian)
end
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: Автопереключение раскладки

Сообщение Андрей »

А еще бы выложили раздел Global Includes
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Автопереключение раскладки

Сообщение kreator »

Вот это имеется ввиду:

Код: Выделить всё

Latin    CSTRING('00000409')
Russian  CSTRING('00000419')
HKL        EQUATE(UNSIGNED)
Или что?
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: Автопереключение раскладки

Сообщение Андрей »

Наверно еще не хватает описания
ActivateKeyBoardLayout ?
kreator
✯ Ветеран ✯
Сообщения: 5161
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Re: Автопереключение раскладки

Сообщение kreator »

Сорри.

Код: Выделить всё

    ActivateKeyboardLayout(HKL,UNSIGNED),HKL,pascal
We are hard at work… for you. :)
Андрей
Старожил
Сообщения: 277
Зарегистрирован: 30 Октябрь 2005, 3:58

Re: Автопереключение раскладки

Сообщение Андрей »

Спасибо !
Ответить