Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];

Вниз

как переключить разкладку клавы (рус./лат./....)   Найти похожие ветки 

 
LVA   (2002-02-22 11:34) [0]

Может кто подскажет:
Мне необходимо переключать разкладку клавы в моей программе, например по RadioGroup.


 
Johnmen   (2002-02-22 11:44) [1]

SetKeyboardLayout, в NT не раб.


 
LVA   (2002-02-22 11:58) [2]

но мне и не нужно в NT4


 
777   (2002-02-22 12:03) [3]

Layout: array[0.. KL_NAMELENGTH] of char;
//RU
LoadKeyboardLayout( StrCopy(Layout,"00000419"),KLF_ACTIVATE);
//EN (или наоборот? :)
LoadKeyboardLayout(StrCopy(Layout,"00000409"),KLF_ACTIVATE);


 
LVA   (2002-02-22 12:43) [4]

а может кто знает где посмотреть коды для других кодировок?
ах да и спасибо "777" за помощ


 
Romkin   (2002-02-22 13:12) [5]

Вот тебе автомат:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
RadioGroup1: TRadioGroup;
BitBtn1: TBitBtn;
procedure RadioGroup1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
FList: array of HKL;
procedure ActivateRG;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Registry;

{$R *.DFM}

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
ActivateKeyboardLayout(FList[RadioGroup1.ItemIndex],0);
end;

const
LocaleNames = "\System\CurrentControlSet\Control\Keyboard Layouts\";

procedure TForm1.ActivateRG;
var
BufSize, i: integer;
s: string;
ActiveLayout: HKL;
begin
if RadioGroup1.Items.Count = 0 then exit;
ActiveLayout := GetKeyboardLayout(0);
for i := Low(FList) to High(FList) do
if FList[i] = ActiveLayout then
RadioGroup1.ItemIndex := i;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
BufSize, i: integer;
s: string;
LocaleName: string;
Reg: TRegistry;
begin
FList := nil;
BufSize := GetKeyboardLayoutList(0,FList);
SetLength(FList, BufSize);
GetKeyboardLayoutList(2,FList[0]);
//Get names
SetLength(s,KL_NAMELENGTH - 1);
RadioGroup1.Items.Clear;
Reg := TRegistry.Create(KEY_READ);
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
for i := Low(FList) to High(FList) do
begin
GetKeyboardLayoutName(PChar(s));
if Reg.OpenKey(LocaleNames + s, false) then
begin
LocaleName := Reg.ReadString("Layout Text");
RadioGroup1.Items.Add(LocaleName);
end;
Reg.CloseKey;
ActivateKeyboardLayout(HKL_NEXT,0);
end;
finally
Reg.Free;
end;
ActivateRG;
end;

end.


 
Anatoly Podgoretsky   (2002-02-23 11:05) [6]

LVA © (22.02.02 11:58)
Если тебе не нужно в линейке НТ, то зачем в запросе указываешь Win2k, WinXP и не передергивай речь не про НТ4 а про линейку НТ.

Кстати такая радиогруппа уже есть в строенная в систему, в systray только разреши ее в настройках системы, между прочим это именно то место куда лезет пользователь для "переключать разкладку клавы".

LVA © (22.02.02 12:43)
Другие идентификаторы можно посмотреть или в MSDN или на крайний случай в реестре, сделай поиск по 00000419 и найдешь все известные твоей системе.


 
Sasha9   (2002-02-23 19:11) [7]

ActivateKeyboardLayout(HKL_NEXT{HKL_PREV},KLF_REORDER);



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

Форум: "Система";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
1-64629
kserg@ukr.net
2002-05-08 11:12
2002.05.20
TStringGrid - как раскрасить строки/ячейки ?


1-64736
Хелп
2002-05-07 10:51
2002.05.20
Хелп !!!!!!!


1-64675
Loxly
2002-05-06 07:58
2002.05.20
Положение панели задач


1-64614
DenKop
2002-05-06 21:25
2002.05.20
ParamStr(1)


1-64680
MCFire
2002-05-05 15:39
2002.05.20
Как увеличить промежуток между строками в QRLabel???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский