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

Список установленных раскладок клавиатуры

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

Список установленных раскладок клавиатуры

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure GetKLList(List: TStrings);
 var
   AList : array [0..9] of Hkl;
   AklName: array [0..255] of Char;
   i: Longint;
 begin
   List.Clear;
   for i := 0 to GetKeyboardLayoutList(SizeOf(AList), AList) - 1 do
     begin
       GetLocaleInfo(LoWord(AList[i]), LOCALE_SLANGUAGE, AklName, SizeOf(AklName));
       List.AddObject(AklName, Pointer(AList[i]));
     end;
 end;

 procedure TForm1.FormCreate(Sender: TObject);
 begin
   GetKLList(ListBox1.Items);
 end;

 procedure TForm1.ListBox1Click(Sender: TObject);
 begin
   with Sender as TListBox do
     ActivateKeyboardLayout(Hkl(Items.Objects[ItemIndex]), 0);
 end;

Переведенный текст:

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

Вот что каждый процедура делает:

GetKLList Эта процедура получает список установленных раскладок клавиатуры (KL) и пополняет объект TStrings, называемый List. Она использует два массива: AList, массив из 256 байт, и AklName, массив символов.

  1. Процедура очищает объект List.
  2. Затем она проходит по списку установленных раскладок клавиатуры с помощью GetKeyboardLayoutList.
  3. Для каждой раскладки она вызывает GetLocaleInfo, чтобы получить имя раскладки в текущем языке системы.
  4. Процедура добавляет элемент в объект List с именем раскладки и указателем на.handle раскладки.

FormCreate Эта процедура вызывается, когда форма создается. Она пополняет список бокса (ListBox1) списком раскладок клавиатуры, полученным с помощью GetKLList.

ListBox1Click Эта процедура вызывается, когда элемент в списке бокса кликнут. Она активирует выбранную раскладку клавиатуры с помощью ActivateKeyboardLayout. Вот предложенная улучшение: Вместо использования Hkl(Items.Objects[ItemIndex]),consider кастинг объекта в тип HKL напрямую, как это:

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  with Sender as TListBox do
    ActivateKeyboardLayout(ListBox1.Items.Objects[ItemIndex] as HKL, 0);
end;

Это потому что Items.Objects[ItemIndex] возвращает объект типа TObject, и кастинг его в тип HKL явно делает код более читаемым и легким для поддержки.

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


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 01:00:55/0.0032010078430176/0