Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

psa1974



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
function GetLayout(asWinNT: Boolean): string;
begin
  case LoWord(GetKeyboardLayout(0)) of
    1033: Result:= 'En';
    1049: Result:= 'Ru';
    1058: Result:= 'Uk'
  else
    Result:= '??';
  end;
  if asWinNT then
    Result:= UpperCase(Result);
end;
 
procedure SetLayout(fLayout: string);
var
  Layout : array[0..KL_NAMELENGTH] of Char;
  LayoutHKL: HKL;
begin
  fLayout:= AnsiLowerCase(fLayout);
  if (fLayout = 'ru') then
    StrCopy(Layout, '00000419')   //  00000419 - русская раскладка
  else
  if (fLayout = 'en') then
    StrCopy(Layout, '00000409')   //  00000419 - английская раскладка
  else
  if (fLayout = 'uk') then
    StrCopy(Layout, '00000422')   //  00000422 - украинская раскладка
  else
    Exit;
  LayoutHKL:= LoadKeyboardLayout(Layout, 0);
  ActivateKeyboardLayout(LayoutHKL, KLF_ACTIVATE);
  PostMessage(Application.Handle, WM_INPUTLANGCHANGEREQUEST, 1, LayoutHKL);
end;
 
procedure SetEngLayout;
var
  Layout : array[0..KL_NAMELENGTH] of Char;
  LayoutHKL: HKL;
begin
  StrCopy(Layout, '00000409');   //  00000419 - английская раскладка
  LayoutHKL:= LoadKeyboardLayout(Layout, 0);
  ActivateKeyboardLayout(LayoutHKL, KLF_ACTIVATE);
  PostMessage(Application.Handle, WM_INPUTLANGCHANGEREQUEST, 1, LayoutHKL);
end;
 
procedure TMainFrm.Button1Click(Sender: TObject);
  var fLayout: string;
begin
  fLayout:= GetLayout(True);
  SetEngLayout;
  try
    // тут показываю модальный  диалог воода логина/пароля
    // бла-бла-бла, типо обработка полученного логина/пароля
  finally
    SetLayout(fLayout);
  end;
end;

Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 22:41 26-05-2010 | Исправлено: psa1974, 22:46 26-05-2010
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru