Глюк с переключением раскладки | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Нашел тут на форуме процедурку для переключения раскладки:
PARAMETERS code DECLARE INTEGER LoadKeyboardLayout IN Win32API String cKLID, Integer nFlags #DEFINE KLF_ACTIVATE 1 =LoadKeyboardLayout(code, KLF_ACTIVATE) RETURN Если обращаюсь к ней с параметром '00000419', переключает на русский. Решил вставить обращение к ней в WHEN комбобокса. Так раскладка, даже если была русской, становится английской для формы(AS TOP-LEVEL). Проверяю на текстбоксе в этой же форме. Если обращение из WHEN убираю, на английский автоматом переключаться перестает. |
Re: Глюк с переключением раскладки | |
---|---|
borman Сообщений: 11046 Откуда: Москва Дата регистрации: 29.07.2004 |
код покажи....
------------------ Многие вещи нам непонятны не потому, что наши понятия слабы, а потому, что сии вещи не входят в круг наших понятий. |
Re: Глюк с переключением раскладки | |
---|---|
Владимир Максимов Сообщений: 14095 Откуда: Москва Дата регистрации: 02.09.2000 |
Вот это читал?
Как переключиться на нужную раскладку клавиатуры Обрати внимание, что именно делает функция LoadKeyboardLayout. В конце статьи дано вкратце назначение функции. |
Re: Глюк с переключением раскладки | |
---|---|
Бураков Сергей Автор Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Действительно, заменил мою процедуру на:
DECLARE INTEGER ActivateKeyboardLayout IN Win32API Integer, Integer lnNeedKeyboard =0x0419 ActivateKeyboardLayout(lnNeedKeyboard,0) Извини, Владимир, но код в приведенном примере мне показался несколько избыточным. Большую часть его составляет преобразование определенных нами же констант из одного вида в другой. К тому же непонятно, зачем проверять, не активизирована ли уже русская раскладка. Проверка, думаю, займет столько же времени и ресурсов, что и сама активизация. Ну, а что касается загрузки шрифта, то он всегда загружен. и переключение стало работать Но я так и не понял, почему предыдущая моя процедура с LoadKeyboardLayout работала при запуске из командного окна и не работает в комбобоксе. Но, в любом случае, спасибо за подсказку. Без нее я бы еще сутки бился. |
Re: Глюк с переключением раскладки | |
---|---|
Владимир Максимов Сообщений: 14095 Откуда: Москва Дата регистрации: 02.09.2000 |
Цитата:Половину кода составляют комментарии, чтобы было понятно о чем идет речь. Другую половину - проверки на тему: а оно нам надо? Цитата:Неправда Ваша. Преобразование констант происходит только один раз именно для функции LoadKeyboardLayout, поскольку для нее надо передать не число (определенные константы), а символьную строку этого же самого числа в 16-ричной системе. Цитата:Это "стандартная" логика любой настройки. Прежде чем ее выполнять следует убедиться, а надо ли ее вообще выполнять? Возможно, уже есть требуемая настройка. Цитата:Возможно. Но ту важен сам принцип. Пичем он себя вполне оправдывает, если использовать код полностью. Цитата:Это Вы сейчас так говорите. Но если уж Вы берете на себя труд установить определенную раскладку клавиатуры, то следует убедиться, что такая раскладка существует. Я могу с ходу придумать парочку ситуаций, когда нужной раскладки не окажется. Цитата:А для этого надо почитать описание работы собственно функции LoadKeyboardLayout в разных операционных системах LoadKeyboardLayout Function Обратите внимание на комментарий к работе этой функции в Windows 95/98/Me PS: Еще раз повторю - автоматическое изменение системных настроек (в данном случае раскладки клаиватуры) - крайне неблагодарное занятие. Следует очень тщательно подумать на тему "а оно нам надо?" прежде чем делать такое. Я сильно подозреваю, что Вам придется впоследствии выбросить этот автоматизм. |
© 2000-2024 Fox Club  |