Форум: "Основная";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];
ВнизОтображение переключения раскладки клавиатуры Найти похожие ветки
← →
FREEMAN (2004-02-24 16:12) [0]Добрый день!!! Помогите!!! Как можно отобразить переключение
языка RU/EN у своего приложения в ststusbar"e?
Заранее благодарен.
← →
Anatoly Podgoretsky (2004-02-24 16:13) [1]С помощью TLabel, свойство Caption
← →
FREEMAN (2004-02-24 16:24) [2]Мне нужно узнать какая сейчас стоит раскладка, а при ее изменении изменить информацию о ней в статусбаре(как это сделано в офисе)
← →
МАКСЮХА (2004-02-24 16:24) [3]
> Anatoly Podgoretsky © (24.02.04 16:13) [1]
Товарищ, простите за идиотский вопрос :) но как узнать, что именно писать в "TLabel, свойство Caption", RU или EN?
← →
FREEMAN (2004-02-24 16:27) [4]Ну наверное узнать можно так GetLayotkeyboard или что то в этом роде, но как сделать что бы при изменении языка Caption тоже менялся.
← →
Hooch (2004-02-24 16:30) [5]если не ошибаюсь, ловить WM_INPUTLANGCHANGE
← →
FREEMAN (2004-02-24 16:31) [6]А вот с этого момента можно поподробнее с картинками, плиз
← →
Anatoly Podgoretsky (2004-02-24 16:39) [7]http://podgoretsky.com/ftp/Language/nps/ru.delphi.html#N127
← →
Игорь Шевченко (2004-02-24 16:40) [8]http://www.schevchenko.net.ru/SRC/EnumFunctions_60.zip
← →
Serge (2004-02-24 18:07) [9][5] + WM_INPUTLANGCHANGEREQUEST+Ловушки (о которых почитай в статьях "Hooks" - аспекты реализации. by Aleksey Pavlov (C))
Приведенной ниже процедурой я добавлял в меню список установленных раскладок (не только RU,EN!)
Procedure TForm1.GetKbdLayouts;
Var TM: TMenuItem;
s, SS: String;
BMP: TBitmap;
R_: TRect;
LayoutName: Array[0..KL_NAMELENGTH] Of Char;
LangName: Array[0..63] Of Char;
hImeList: Array[0..19] Of HKL;
cnt, i: byte;
lf: TLogFont;
Begin
cnt := GetKeyBoardLayoutList(20, hImeList);
For i := 0 To cnt - 1 Do
Begin
// ActivateKeyBoardLayout(hImeList[i], 0);
// GetKeyboardLayoutName(@LayoutName);
ss := IntToHex(LoWord(hImeList[i]), 8);
// ss := LayoutName;
FillChar(LangName, SizeOf(LangName), #0);
GetLocaleInfo(StrToInt("$" + ss), LOCALE_SLANGUAGE Or LOCALE_NOUSEROVERRIDE, @LangName, SizeOf(LangName));
TM := TMenuItem.Create(Self);
TM.OnDrawItem := Form1.aDrawItem;
TM.OnMeasureItem := Form1.MeasureItem;
TM.OnClick := Form1.CheckLanguage;
TM.RadioItem := True;
TM.Hint := IntToStr(LangNumber);
TM.Caption := LangName;
TM.Tag := hImeList[i];
ss := "";
ss := TM.Caption;
delete(ss, 3, length(ss));
BMP := TBitmap.Create;
BMP.Width := 16; BMP.Height := 16;
R_ := Rect(0, 0, 16, 16);
With BMP.Canvas Do
Begin
SystemParametersInfo(SPI_GETICONTITLELOGFONT, sizeof(LOGFONT), @lf, 0);
Brush.Color := GetSysColor(COLOR_HIGHLIGHT); //clred; //$000080FF;
FillRect(R_);
Font.Color := GetSysColor(COLOR_HIGHLIGHTTEXT); //clwhite;
font.size := 7;
drawtext(handle, pchar(ss), length(ss), R_, DT_SINGLELINE + DT_VCENTER + DT_CENTER);
End;
TM.Bitmap := BMP;
Bitmap2IconH(bmp, clblack, ico16, Ic);
IconList.AddIcon(Ic);
PopUpMenu2.Items.Insert(LangNumber, TM);
Inc(LangNumber);
End;
End;
← →
savva (2004-02-24 18:10) [10]ну и я внесу свою лепту:)
http://delphibase.endimus.com/?action=viewfunc&topic=sysparams&id=10256
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.03.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c