Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Переключение раскладки клавиатуры для приложения

Delphi , ОС и Железо , Клавиши

Переключение раскладки клавиатуры для приложения

Code:
{ **** UBPFD *********** by kladovka.net.ru ****
>> Переключение раскладки клавиатуры для приложения
 
Зависимости: Windows
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov
Дата:        21 мая 2002 г.
********************************************** }
 
function ChangeLayout(LANG: Integer): Boolean;
var
Layouts: array [0..16] of HKL;
i, Count: Integer;
begin
Result:=False;
Count:=GetKeyboardLayoutList(High(Layouts)+1, Layouts)-1;
for i:=0 to Count do if (LoWord(Layouts[i]) and $FF) = LANG then
Result:=ActivateKeyboardLayout(Layouts[i], 0)<>0;
end;
 
 
 
Пример использования:
Code:
ChangeLayout(LANG_RUSSIAN);
ChangeLayout(LANG_ENGLISH);
 

Перевод на русский язык:

Код-snippet на Delphi, позволяющий изменять раскладку клавиатуры в приложении. Вот подробное описание того, что код делает:

Функция ChangeLayout принимает целочисленный параметр LANG, представляющий идентификатор языка для переключения. Функция возвращает булевое значение, указывающее, была ли изменена раскладка успешно.

Вот как работает код:

  1. Он инициализирует массив Layouts с 17 элементами, каждый из которых представляет код раскладки клавиатуры (HKL).
  2. Затем он вызывает функцию GetKeyboardLayoutList, чтобы получить список доступных раскладок клавиатуры, и хранит его в массиве Layouts.
  3. Функция затем проходит по массиву Layouts и проверяет, если идентификатор языка, переданный в виде аргумента, совпадает с идентификатором языка, хранящимся в каждом элементе (используя операцию bitwise AND). Если найден совпадение, функция вызывает функцию ActivateKeyboardLayout, чтобы переключиться на эту раскладку.
  4. Результат вызова функции ActivateKeyboardLayout проверяется на успех и возвращается как булевое значение.

Пример использования показывает, как использовать эту функцию для переключения между русским (LANG_ RUSSIAN) и английским (LANG_ENGLISH) языками раскладки клавиатуры.

Вот предложенная альтернативная реализация:

Вместо использования массива HKL-кодов можно использовать компонент TStringList, чтобы хранить идентификаторы языков как строки. Это сделает добавление или удаление языков проще, не требуя изменения кода. Также можно рассмотреть более современный подход, используя функции Windows API для загрузки и разгрузки раскладок клавиатуры.

Вот обновленная версия кода:

function ChangeLayout( LANG: Integer ): Boolean;
var
  Layouts: TStringList;
begin
  Result := False;
  Layouts := TStringList.Create;

   // Добавление идентификаторов языков как строк
  Layouts.Add('0419');  // Русский
  Layouts.Add('0409');  // Английский

  for i := 0 to Layouts.Count - 1 do
    if (StrToInt(Layouts[i]) = LANG) then
      Result := ActivateKeyboardLayout(StrToHKL(Layouts[i]), 0) <> 0;

  Layouts.Free;
end;

function StrToHKL( LanguageID: string ): HKL;
begin
   // Конвертация идентификатора языка в код раскладки клавиатуры
   // Вы можете использовать словарь или таблицу маппинга для этого
  Result := HKL(StrToInt(LanguageID));
end;

Обратите внимание, что функция StrToHKL не реализована в этом примере, поскольку она зависит от того, как вы хотите конвертировать строковый идентификатор языка в код раскладки клавиатуры.

В статье описывается функция ChangeLayout, которая позволяет переключать раскладку клавиатуры для приложения на язык, заданный в параметре LANG.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Клавиши ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:42:38/0.0057358741760254/1