powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Регистр букв и язык ввода
6 сообщений из 6, страница 1 из 1
Регистр букв и язык ввода
    #34078314
Mazai-XZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как задать свойство у текстбокса, чтоб при выборе его автоматом менялась раскладка клавиатуры и буквы становились заглавными? в аксессе это в свойствах задаётся, а в ВБ как?
...
Рейтинг: 0 / 0
Регистр букв и язык ввода
    #34078536
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такого свойства у текстбокса нет
...
Рейтинг: 0 / 0
Регистр букв и язык ввода
    #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
Регистр букв и язык ввода
    #34078778
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только вот с CAPS LOCK'ом проблемы, т.е. когда включаешь индикатор не загорается
...
Рейтинг: 0 / 0
Регистр букв и язык ввода
    #34079308
Mazai-XZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orunbekТолько вот с CAPS LOCK'ом проблемы, т.е. когда включаешь индикатор не загорается
Огромное спасибо! Буду пробывать!
...
Рейтинг: 0 / 0
Регистр букв и язык ввода
    #34083809
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для того, чтобы буквы были заглавными, можно обойтись без включения Caps Lock.

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

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

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


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