Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Регистр букв и язык ввода / 6 сообщений из 6, страница 1 из 1
24.10.2006, 19:10
    #34078314
Mazai-XZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистр букв и язык ввода
Как задать свойство у текстбокса, чтоб при выборе его автоматом менялась раскладка клавиатуры и буквы становились заглавными? в аксессе это в свойствах задаётся, а в ВБ как?
...
Рейтинг: 0 / 0
24.10.2006, 22:06
    #34078536
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистр букв и язык ввода
Такого свойства у текстбокса нет
...
Рейтинг: 0 / 0
25.10.2006, 07:32
    #34078776
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистр букв и язык ввода
Нужно через API, или SendKeys или вместе сразу,
например через API меняете раскладку, затем включаете CapsLock
Примерно вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
Option Explicit

Const LANG_EN_US As String = "00000409"
Const LANG_RU As String = "00000419"
Const KLF_ACTIVATE As Long = &H1
Const KL_NAMELENGTH =  9 
Const VK_CAPITAL = &H14

Private Type KeyboardBytes
     kbByte( 0  To  255 ) As Byte
End Type

Private Declare Function GetKeyboardLayoutName Lib "user32" Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long
Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long

Dim strCurrentKeybLayoutName$, CurrentKeyboardState As KeyboardBytes, lngCurrentCapitalState&

Private Sub Form_Paint()
    Dim strName$, strKeybLayout$, strLocId$
    Me.Cls
    strName = String(KL_NAMELENGTH,  0 )
    strName = Left(strName, Len(strName) -  1 )
    GetKeyboardLayoutName strName
    Me.Print "Keyboard layout name: " + strName
    strKeybLayout = LANG_RU
    strLocId = LoadKeyboardLayout((strKeybLayout & Chr( 0 )), KLF_ACTIVATE)
End Sub

Private Sub Text1_GotFocus()
'Get the keyboard loayout
    strCurrentKeybLayoutName = String(KL_NAMELENGTH,  0 )
    strCurrentKeybLayoutName = Left(strCurrentKeybLayoutName, Len(strCurrentKeybLayoutName) -  1 )
    GetKeyboardLayoutName strCurrentKeybLayoutName
'Get the current keyboard state
    GetKeyboardState CurrentKeyboardState
    lngCurrentCapitalState = CurrentKeyboardState.kbByte(VK_CAPITAL)
'Set the keyboard layout state to russian
    LoadKeyboardLayout LANG_RU, KLF_ACTIVATE
'Set the CAPITAL state ON
    CurrentKeyboardState.kbByte(VK_CAPITAL) =  1 
    SetKeyboardState CurrentKeyboardState
End Sub

Private Sub Text1_LostFocus()
'Restore keyboard layout and capital state
    LoadKeyboardLayout strCurrentKeybLayoutName, KLF_ACTIVATE
    CurrentKeyboardState.kbByte(VK_CAPITAL) = lngCurrentCapitalState
    SetKeyboardState CurrentKeyboardState
End Sub
У вас на форме должно быть два TextBox'а, ну и этот код запихните в код Form'ы
...
Рейтинг: 0 / 0
25.10.2006, 07:34
    #34078778
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистр букв и язык ввода
Только вот с CAPS LOCK'ом проблемы, т.е. когда включаешь индикатор не загорается
...
Рейтинг: 0 / 0
25.10.2006, 11:01
    #34079308
Mazai-XZ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистр букв и язык ввода
orunbekТолько вот с CAPS LOCK'ом проблемы, т.е. когда включаешь индикатор не загорается
Огромное спасибо! Буду пробывать!
...
Рейтинг: 0 / 0
26.10.2006, 14:36
    #34083809
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регистр букв и язык ввода
Для того, чтобы буквы были заглавными, можно обойтись без включения Caps Lock.

На событие KeyPress повесить следующий код.

Код: plaintext
    KeyAscii = Asc(UCase(Chr(KeyAscii)))

Также через WinAPI можно назначить стиль полю ( SetWindowLong: Special Text Box Styles and Messages ).
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Регистр букв и язык ввода / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]