Работа с текстовыми полями.
kharkov_max
Дата: 28.11.2006 19:37:53
Как решить следующие задачи.
Есть форма для ввода данных, в ней есть текстовое поле, как нужно правильно сделать что б при вводе:
1. Автоматически включалась русская раскладка клавиатуры.
2. Первая буква всегда становилась заглавной, при потере фокуса поля либо при Enter, Tab либо "Пробел" и, соответственно, заглавной добавлялась в таблицу связанную с этой формой.
3. При нажатии "Пробел" фокус переходил автоматически на следующий элемент в форме по списку, так как при нажатии Enter.
Заранее спасибо.
Владимир Саныч
Дата: 28.11.2006 19:44:00
Владимир Саныч
Дата: 28.11.2006 19:46:58
На третий:
Private Sub a_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then
KeyAscii = 0
SendKeys "{tab}"
End If
End Sub
Владимир Саныч
Дата: 28.11.2006 19:50:32
На второй:
Private Sub a_Change()
Dim n As Integer
If Len(a.Text) > 0 Then
n = a.SelStart
a.Text = UCase(Left(a.Text, 1)) & Mid(a.Text, 2)
a.SelStart = n
End If
End Sub
Владимир Саныч
Дата: 28.11.2006 19:52:45
На первый вопрос что-то ссылка плохо вышла...
Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" _
(ByVal pwszKLID As String, ByVal flags As Long) As Long
Private Sub a_Enter()
LoadKeyboardLayout "00000419", 1
End Sub
Владимир Саныч
Дата: 28.11.2006 19:57:11
Для второго вопроса вариант:
Private Sub a_AfterUpdate()
If Len(a) > 0 Then
a = UCase(Left(a, 1)) & Mid(a, 2)
End If
End Sub
Здесь значение меняется после выхода из поля. В первом варианте - прямо в ходе набора текста.
kharkov_max
Дата: 29.11.2006 11:46:15
Тогда еще один вопрос от начинающего )
Как 2й и 3й вопрос объединить и применить к какому нибудь конкретному текстовому полю.
Например есть текстовое поле "Данные" в форме "Ввод данных" на какое событие вешать данные процедуры?
Я так полагаю на изменение поля. Если можно то в примере ).
Владимир Саныч
Дата: 29.11.2006 11:59:14
Я же всё написал. На Ваше счастье все мои 4 примера вешаются на разные события, поэтому их можно комбинировать как угодно.
kharkov_max |
Я так полагаю на изменение поля. Если можно то в примере ). |
Не надо гадать, у меня всё написано. И примеры я уже привел, Вам осталось только заменить имя поля и скопировать их к себе.
kharkov_max
Дата: 29.11.2006 14:55:22
Огромное спасибо.
Во всем разобрался и все заработало. Единственное способ кот. проверялась каждая буква для 2 го. вопроса немного тормознуто работает его конечно лучше не использовать.
Владимир Саныч
Дата: 29.11.2006 15:21:21
kharkov_max |
Единственное способ кот. проверялась каждая буква для 2 го. вопроса немного тормознуто работает его конечно лучше не использовать. |
Согласен. Тем более что он не соответствует постановке задачи ("при потере фокуса поля либо при Enter, Tab либо "Пробел"").