Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.07;
Скачать: CL | DM;

Вниз

Keyboard   Найти похожие ветки 

 
Adil   (2002-11-24 08:10) [0]

Salam Aleykum
Как поменят расскладку(keyboard layout (En,Ru,Tr...)) из моего программу.И как определять расскладку.
loadkeyoardlayout в windows 2000 pro не работает.
_______________


 
Андрей Ваганов   (2002-11-24 17:47) [1]

Привет!
Попробуй следующий код(проверен, работает в D5):
****************************************************************
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
ru,eng:HKL;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
ru:=LoadKeyboardLayout("00000419",0);
eng:=LoadKeyboardLayout("00000409",0);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ActivateKeyboardLayout(ru,0);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ActivateKeyboardLayout(eng,0);
end;

end.
****************************************************************
...посмотри:
1.ActivateKeyboardLayout
2.GetKeyboardLayoutName
3.UnloadKeyboardLayout
4.LoadKeyboardLayout
5.GetKeyboardLayoutList
6.GetKeyboardState
...итд всё есть в MSDN Library


 
Alexandr Emelin   (2002-11-27 08:45) [2]

А как отследить переключение раскладки?


 
askanio   (2002-11-27 09:55) [3]

Вот ещё один вариант.
В этой процедуре я переключаю раскладку при установке фокуса в определённый столбец сетки. Для переключения использую "HKL_Next" так как у меня доступно только два варианта раскладки (rus, eng).

procedure TForm3.SG1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
var
buf: array[0..8] of char;
I: Integer;
begin
GetKeyboardLayoutName(buf);
I := StrToInt(buf);
if (ACol = 1) and (I = 419) then
ActivateKeyboardLayout(HKL_NEXT, 0);
if (ACol = 2) and (I = 409) then
ActivateKeyboardLayout(HKL_NEXT, 0);
end;


 
Garrett   (2003-01-11 16:29) [4]

определить переключение раскладки можно повесив хук на Send-сообщения текущему потоку и отлавливая там сообщение WM_INPUTLANGCHANGE


 
kernel::panic   (2003-02-12 10:32) [5]

4Garret а не напишешь примерчик для отлова WM_INPUTLANGCHANGE, а то не очень получается.


 
Ruf ©   (2003-02-12 11:44) [6]

Прикол: только хотел писать такой же вопрос :)
Чтобы передать изменение языка всей системы:
PostMessage(HWND_BROADCAST,WM_INPUTLANGCHANGEREQUEST,0,0);



Страницы: 1 вся ветка

Текущий архив: 2003.04.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
3-19420
Staraya
2003-03-18 09:35
2003.04.07
Отношение один ко многим


3-19483
Виталий Панасенко
2003-03-18 14:01
2003.04.07
FIBPlus&Exception


14-19755
Rollch
2003-03-21 23:10
2003.04.07
Как убрать корзину с рабочего стола (XP)


7-19878
Алексей Глеб
2003-02-11 14:28
2003.04.07
Импульсы


3-19418
Дервиш
2003-03-18 08:16
2003.04.07
Запрос из таблиц, полученных другими TQuery