Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: переключение кириллицы на латиницу и обратно
 
 автор: ser60   (09.10.2013 в 06:25)   личное сообщение
 
 

когда-то (не помню где, может быть и на этом форуме) видел пример переключения кириллицы на латиницу при получении фокуса окном и обратном переключении при покидании этого окна с использованием API функций. сейчас не могу найти. Помогите.
Может есть и другие способы?
Если имеет значение, сейчас использую 64 разрядную Win7. Заранее спасибо!

  Ответить  
 
 автор: Дядя Федор   (09.10.2013 в 08:12)   личное сообщение
 
 

Набор ф-й для раскладки


Public Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (pwszKLID As Any) As Long
  Public Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal HKL As String, ByVal Flags As Long) As Long
  
Dim bArr(500) As Byte
  Function decodeString() As String
      Dim i As Integer
      Dim SS As String, bb As Byte
      SS = ""
      For i = 1 To 500
          bb = bArr(i)
          If bb <> 0 Then
              SS = SS & Chr(bb)
          Else
              decodeString = SS
              Exit Function
          End If
      Next i
      decodeString = SS
      Exit Function
  End Function
  Public Function getCurrentLanguage()
      Dim z As Long
      z = GetKeyboardLayoutName(bArr(1))
      If z = 0 Then
          getCurrentLanguage = ""
      Else
          getCurrentLanguage = decodeString
      End If
  End Function
  Public Function getCurrentLanguage()
      Dim z As Long
      z = GetKeyboardLayoutName(bArr(1))
      If z = 0 Then
          getCurrentLanguage = ""
      Else
          getCurrentLanguage = decodeString
      End If
  End Function
 'Переключает на русский
  Public Function switchToRussian()
      Dim SS As String
      SS = getCurrentLanguage
      If InStr(SS, "419") = 0 Then
          LoadKeyboardLayout "00000419", 1
      End If
  End Function
  'Переключает на английский
  Public Function switchToEnglish()
      Dim SS As String
      SS = getCurrentLanguage
      If InStr(SS, "409") = 0 Then
          LoadKeyboardLayout "00000409", 1
      End If
  End Function


пс. На win7 не пробовал

  Ответить  
 
 автор: ser60   (09.10.2013 в 14:57)   личное сообщение
 
 

спс, работает! функция getCurrentLanguage() дважды была
Дядя Федор, извини за нахальство, а переключение прописных и строчных букв также при смене окна?

  Ответить  
 
 автор: Дядя Федор   (10.10.2013 в 10:54)   личное сообщение
 
 

Типа программно включить/отключить CapsLock:

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long

Public Function GetCapslock() As Boolean
    ' Return or set the Capslock toggle.
    GetCapslock = CBool(GetKeyState(vbKeyCapital) And 1)
End Function

Public Function GetNumlock() As Boolean
    ' Return or set the Numlock toggle.
    GetNumlock = CBool(GetKeyState(vbKeyNumlock) And 1)
End Function

Public Function GetScrollLock() As Boolean
    ' Return or set the ScrollLock toggle.
    'GetScrollLock = CBool(GetKeyState(vbKeyScrollLock) And 1)
End Function

Public Sub SetCapslock(Value As Boolean)
    ' Return or set the Capslock toggle.
    Call SetKeyState(vbKeyCapital, Value)
End Sub

Public Sub SetNumlock(Value As Boolean)
    ' Return or set the Numlock toggle.
    Call SetKeyState(vbKeyNumlock, Value)
End Sub

Public Sub SetScrollLock(Value As Boolean)
    ' Return or set the ScrollLock toggle.
    'Call SetKeyState(vbKeyScrollLock, Value)
End Sub

Public Sub SetKeyState(intKey As Integer, fTurnOn As Boolean)
    ' Retrieve the keyboard state, set the particular
    ' key in which you're interested, and then set
    ' the entire keyboard state back the way it
    ' was, with the one key altered.
    Dim abytBuffer(0 To 255) As Byte
    GetKeyboardState abytBuffer(0)
    abytBuffer(intKey) = CByte(Abs(fTurnOn))
    SetKeyboardState abytBuffer(0)
End Sub

Public Sub tstcl()
SetCapslock (True)
End Sub

  Ответить  
 
 автор: ser60   (13.10.2013 в 05:47)   личное сообщение
 
 

может ссылку вышлете, если это где-то опубликовано. А то с гугловским переводом какие нибудь пробелы пропущу
в предыдущем сообщении слова "дважды Была " лишние, а то как то по контексту некрасиво получилось, извините

  Ответить  
 
 автор: Дядя Федор   (14.10.2013 в 08:13)   личное сообщение
 
 

Много полезного в http://am.rusimport.ru/MsAccess/topic.aspx?id=476
База Refer_XP.

  Ответить  
 
 автор: Explorer   (15.10.2013 в 00:54)   личное сообщение
 
 

это один из примеров от Гетца и Джилберта
из VBA Developer's Handbook

http://yandex.ru/yandsearch?text=isbn%200-7821-1951-4&lr=213

http://www.mcwtech.com/Downloads/1951c04.pdf
(с) Сайбекс 1997

  Ответить  
 
 автор: Андрэич   (15.10.2013 в 10:40)   личное сообщение
 
 


переключения кириллицы на латиницу при получении фокуса окном и обратном переключении при покидании этого окна с использованием API функций...
Может есть и другие способы?


У полей на вкладке Макет есть св-во Язык клавиатуры, которое срабатывает при получении фокуса полем...

  Ответить  
 
 автор: ser60   (16.10.2013 в 06:47)   личное сообщение
 
 

Спасибо, попробую

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList