Объявление в газету в разделе трудоустройство. Для ухода за пожилым программистом требуется приятная женщина, говорящая на FORTRAN, BASIC и С++.
procedure SetRU;
var
Layout: array [0.. KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout(StrCopy(Layout, '00000419'), KLF_ACTIVATE);
end;
procedure SetEN;
var
Layout: array [0.. KL_NAMELENGTH] of char;
begin
LoadKeyboardLayout(StrCopy(Layout, '00000409'), KLF_ACTIVATE);
end;
или
var
rus, lat: HKL;
rus := LoadKeyboardLayout('00000419', 0);
lat := LoadKeyboardLayout('00000409', 0);
SetActiveKeyboardLayout(rus);
Задача заключается в переключении между русским и английским языками в программе. Предоставлены кодовые фрагменты на Delphi, использующие Windows API.
Первый подход: Использование процедур SetRU и SetEN
В этом подходе определены две процедуры: SetRU и SetEN. Каждая процедура загружает конкретную клавиатурную раскладку с помощью функции LoadKeyboardLayout из Windows API. Используется флаг KLF_ACTIVATE, чтобы активировать загруженную раскладку.
Работа этого подхода:
В массиве Layout объявлен размер KL_NAMELENGTH, который является константой, определенной в программе.
В каждой процедуре вызывается новая инстанция функции LoadKeyboardLayout, передавая код языка как строку и флаг KLF_ACTIVATE.
Загруженная раскладка активируется с помощью функции LoadKeyboardLayout.
Второй подход: Использование переменных rus и lat
В этом подходе объявлены две переменные rus и lat, чтобы хранить handles русской и английской клавиатурных раскладок соответственно. Эти handles получаются вызовом функции LoadKeyboardLayout с кодом языка как строкой и флагом, указывающим, что раскладка должна быть загружена, но не активирована.
Работа этого подхода:
Переменная rus присваивается результат вызова LoadKeyboardLayout с кодом русского языка ('00000419') и флагом 0 (индикатор загрузки, но не активации).
Переменная lat присваивается результат вызова LoadKeyboardLayout с кодом английского языка ('00000409') и флагом 0.
Для переключения на русскую раскладку вызывается функция SetActiveKeyboardLayout с handle rus в качестве аргумента.
Чтобы использовать эти подходы в вашей программе, вам нужно создать кнопку или другой элемент интерфейса, который триггерит переключение языка при клике. Например:
В этом примере созданы три кнопки с текстом "RU", "EN" и "Switch". При клике первой кнопки вызывается процедура SetRU, которая активирует русскую языковую раскладку. При клике второй кнопки вызывается процедура SetEN, которая активирует английскую языковую раскладку. Третья кнопка триггерит переключение языка с помощью переменных rus и lat.
В статье описывается способ переключения языка в программе с помощью функции SetActiveKeyboardLayout и загрузки соответствующих шаблонов ввода.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.