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

Как из программы переключать языки

Delphi , ОС и Железо , Язык

Как из программы переключать языки



Объявление в газету в разделе трудоустройство. Для ухода за пожилым программистом требуется приятная женщина, говорящая на 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, чтобы активировать загруженную раскладку.

Работа этого подхода:

  1. В массиве Layout объявлен размер KL_NAMELENGTH, который является константой, определенной в программе.
  2. В каждой процедуре вызывается новая инстанция функции LoadKeyboardLayout, передавая код языка как строку и флаг KLF_ACTIVATE.
  3. Загруженная раскладка активируется с помощью функции LoadKeyboardLayout.

Второй подход: Использование переменных rus и lat

В этом подходе объявлены две переменные rus и lat, чтобы хранить handles русской и английской клавиатурных раскладок соответственно. Эти handles получаются вызовом функции LoadKeyboardLayout с кодом языка как строкой и флагом, указывающим, что раскладка должна быть загружена, но не активирована.

Работа этого подхода:

  1. Переменная rus присваивается результат вызова LoadKeyboardLayout с кодом русского языка ('00000419') и флагом 0 (индикатор загрузки, но не активации).
  2. Переменная lat присваивается результат вызова LoadKeyboardLayout с кодом английского языка ('00000409') и флагом 0.
  3. Для переключения на русскую раскладку вызывается функция SetActiveKeyboardLayout с handle rus в качестве аргумента.

Чтобы использовать эти подходы в вашей программе, вам нужно создать кнопку или другой элемент интерфейса, который триггерит переключение языка при клике. Например:

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetRU;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetEN;
end;

// или
procedure TForm1.Button3Click(Sender: TObject);
var
  rus, lat: HKL;
begin
  rus := LoadKeyboardLayout('00000419', 0);
  lat := LoadKeyboardLayout('00000409', 0);
  SetActiveKeyboardLayout(rus);
end;

В этом примере созданы три кнопки с текстом "RU", "EN" и "Switch". При клике первой кнопки вызывается процедура SetRU, которая активирует русскую языковую раскладку. При клике второй кнопки вызывается процедура SetEN, которая активирует английскую языковую раскладку. Третья кнопка триггерит переключение языка с помощью переменных rus и lat.

В статье описывается способ переключения языка в программе с помощью функции SetActiveKeyboardLayout и загрузки соответствующих шаблонов ввода.


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

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




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


:: Главная :: Язык ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-07-17 01:46:01/0.0057628154754639/0