Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Индикатор языковой панели??


Автор: Nicholas 23.1.2005, 12:22
У меня форма закрывает весь экран, на ней вводится пароль, хотелось бы видеть в удобном мне месте на форме индикатор раскладки клавиатуры.

Подскажите что на форме сделать такого, что бы отображало язык руссский/английский?
smile

Автор: Alex 23.1.2005, 14:20
http://forum.vingrad.ru/index.php?showtopic=30237&unread=1&hl=раскладка

Автор: Nicholas 24.1.2005, 11:48
Короче сдела я уже такую штуку, но тот код, что нассылке висит с ошибками!

Правильно вопрос звучит так: Как помести на форму приложения в удобное мне место стандартную языковую панель, ну та , что рядом с трейем??

Автор: Snowy 24.1.2005, 12:11
В ВинХП просто перетащи на нужное тебе место smile
По другому ее не перетащишь. Только свою рисовать.
Да это и не сложно. тот же спидбатон легко приспасабливается для данных нужд.
Если хотишь, чтобы всегда висел, то положи на отдельную маленькую формочку и вешай поверх всех окон.

Автор: Nicholas 25.1.2005, 05:34
Цитата(Snowy @ 24.1.2005, 12:11)
Да это и не сложно. тот же спидбатон легко приспасабливается для данных нужд.


Я так и сделал, просто хотелось, что на ней все настройки стандартной панели были доступны.

Автор: Snowy 25.1.2005, 09:19
Ну, если сможешь получить хэндл окна языковой панели (это может быть затруднительно, если ее нет на экране (у меня нет)), то можно просто передавать ей события маускликов. Правда не уверен наверняка, что у него есть персональный хэндл. В 9х его скорее всего нет. В XP должен быть, но я не проверял... Уменя языковая панель вообще в системе отсутствует, поэтому проверить не могу...

Автор: p0s0l 25.1.2005, 11:52
Попробуй Windows.SetParent (wndLangPanel, YourPanel.Handle);

Добавлено @ 11:53
Только не забудь вернуть обратно smile

(но это не очень хороший способ всё равно, лучше сам рисуй)...

Автор: Snowy 25.1.2005, 12:04
Это лишнее. А если прога повиснет/заглючит... А если переключиться на другую прогу...
Оптимально просто ловить клик левой и правой кнопы. При их получении соответственно посылать тот же самый месседж системному переключателю.

Но если брать реально. То по идее нужен только левый батон - для переключения языка. Так что совершенно незачем вообще трокать системный переключатель - все более, чем просто.
Нажали - сделали переключение. И заморочек меньше, и код аккуратней, и различные заглюки исключены.

Автор: p0s0l 25.1.2005, 13:08
Цитата(Snowy @ 25.1.2005, 12:04)
Это лишнее. А если прога повиснет/заглючит... А если переключиться на другую прогу...
Поэтому и сказал, что способ не очень хороший. Зато самый простой smile

Цитата(Snowy @ 25.1.2005, 12:04)
Оптимально просто ловить клик левой и правой кнопы. При их получении соответственно посылать тот же самый месседж системному переключателю.

Но если брать реально. То по идее нужен только левый батон - для переключения языка. Так что совершенно незачем вообще трокать системный переключатель - все более, чем просто.
Зачем ? Ты же сам сказал, что языковая панель не обязательно присутствует ?
Имхо легче самому нарисовать панельку (GetKeyboardLayout), и вручную переключать раскладки (ActivateKeyBoardLayout), чем передавать клики (еще и неизвестно чему, если нет яз.панели)...

Автор: Snowy 25.1.2005, 13:28
Именно. Я об этом и говорю. Если хочется, чтобы был системный переключатель, то просто передавать ему свои клики.
Но вариант далеко не гарантированный. Вероятность того, что работать не будет больше 70% smile
Поэтому лучше делать свою кнопку и оставить в покое системный переключатель.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)