Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail



Ответ
 
Опции темы
Старый 19.07.2009, 22:14   #1
smoky
Форумчанин
 
Регистрация: 13.05.2008
Сообщений: 65
Репутация: 10
Восклицание Как сделать переключение языка ввода при попадании в определенное поле

Вобщем сабж. Есть несколько полей - к примеру 3 поля. В первое и третье надо вводить слова только на русской раскладке, во второе - буквенный код вида D013 по английски. Реально ли соорудить сабж? имхо надо юзать вбскрипт подскажите или лучше ткните готовым... ибо я в скриптах еще плохо разбираюсь... решить задачу способами: поставить пунтасвитчер и изменить буквенный код на "по-русски" Д013 не предлагать Решение может еще кому понадобится, так что тема довольно актуальная. По форуму полазив и погуглив - решения не нашел... если есть где - ткните
smoky вне форума   Ответить с цитированием
Старый 20.07.2009, 08:45   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 22,820
Репутация: 5078
По умолчанию

реально.

вот, например,

Переключение раскладки на русскую если в данный момент раскладка английская средствами WinAPI:

(с) Автор: Troitsky, Отправлено:10:28 04-11-2006

Код:

Private Declare Function GetKeyboardLayoutName Lib "user32" _ 
Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long 

Private Declare Function ActivateKeyboardLayout Lib "user32" _ 
(ByVal HKL As Long, ByVal flags As Long) As Long 


Sub ChangeKeyboardLayout() 
Dim KeybLayoutName As String 
KeybLayoutName = String(9, 0) 
GetKeyboardLayoutName KeybLayoutName 
'409 - английская, 
'419 - русская 
'Переключение раскладки на русскую если в данный момент раскладка английская 
If Val(CStr(CLng(Left$(KeybLayoutName, InStr(1, KeybLayoutName, Chr(0)) - 1)))) = 409 Then 
  ActivateKeyboardLayout 0, 0 
End If 
End Sub

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 20.07.2009, 22:29   #3
smoky
Форумчанин
 
Регистрация: 13.05.2008
Сообщений: 65
Репутация: 10
По умолчанию

О! Самое то, спасибо! для тех кому понадобится:
Сам этот скрипт пихаем в редакторе VB в модуль
На нужное нам событие вешаем:
Код:

Private Sub Поле8_GotFocus()
 ChangeKeyboardLayout
End Sub

удобно и просто.
smoky вне форума   Ответить с цитированием
Старый 23.05.2012, 20:49   #4
Giku
Форумчанин
 
Регистрация: 30.12.2009
Сообщений: 53
Репутация: 5
По умолчанию

а на Delphi 7 ???
Giku вне форума   Ответить с цитированием
Старый 23.05.2012, 20:51   #5
Giku
Форумчанин
 
Регистрация: 30.12.2009
Сообщений: 53
Репутация: 5
По умолчанию

sorry не туда записал, но если кто знает скажите плззз
Giku вне форума   Ответить с цитированием
Старый 14.09.2017, 23:33   #6
Виталий_Сахно
Новичок
 
Регистрация: 08.07.2017
Сообщений: 2
Репутация: 10
По умолчанию

Народ! А кто знает как сделать тоже самое но для VBA7 ? Пишет, что функция должна быть описана как PtrSafe Function. Почитал на http://excelvba.ru/articles/WinAPI, попробовал просто (тупо) заменить Long на LongPtr. другой разницы в приведенных примерах не увидел. Однако не заработало. Мало того при компиляции в 2007 сразу выдает ошибку - оно и понятно - таких типов переменных у 2007 нет.
Виталий_Сахно вне форума   Ответить с цитированием
Старый 15.09.2017, 08:59   #7
Aleksandr H.
2 the Nation Glory
Профессионал
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Адрес: Wild West Ukraine
Сообщений: 2,035
Репутация: 741

skype: aleksandr.gryb
По умолчанию

У меня так
Код:

#If Win64 Then
    Public Declare PtrSafe Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long  ' для отримання вибраної мови
    
     Public Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer ' для отримання статусів КАПС, НАМ, СКРОЛ
     
    Public Declare PtrSafe Function ActivateKeyboardLayout& Lib "user32" (ByVal HKL As Long, _
    ByVal flags As Long) ' для переключення розкладки клавіатури
     
    Public Declare PtrSafe Function GetKeyboardLayout& Lib "user32" (ByVal dwLayout As Long)
 #Else
    Public Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long   ' для отримання вибраної мови

           
    Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer  ' для отримання статусів КАПС, НАМ, СКРОЛ
     
    Public Declare Function ActivateKeyboardLayout& Lib "user32" (ByVal HKL As Long, _
        ByVal flags As Long) ' для переключення розкладки клавіатури
     
    Public Declare Function GetKeyboardLayout& Lib "user32" (ByVal dwLayout As Long)
 #End If

https://msdn.microsoft.com/ru-ru/lib...or=-2147217396
__________________
Mailto: media.project@ukr.net
"спасибо" принимаются на webmoney: R676842461689, Z243088649038, U164738001305; AdvancedCash: U853633661253, E181662999107; ПриватБанк.UA
Aleksandr H. вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать фокус ввода в поле Edit Arassir Помощь студентам 14 11.07.2012 12:37
После ввода в поле по Enter нужно перейти на другое поле! •ScReam•™ Помощь студентам 2 16.06.2009 08:47
Может кто знает как вставить текст в чужое поле ввода Dark_Elf Win Api 4 20.08.2008 13:47
Как сделать так, чтобы переключение между окнами было автоматическим? barand Свободное общение 9 07.07.2008 23:54
как сделать, чтобы в определенное время появлялось новое окно Alar Общие вопросы Delphi 0 29.10.2006 21:30




14:01.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru