Страница 1 из 1
Перемещение в форме Exel?
Добавлено: 24 янв 2005, 17:00
VAA
Проверяю условия при вводе текста в TextBox. Если условия не выполняются, появляется сообщение о соответствующем нарушении условия. Как при этом "удержать" курсор в TextBox, до тех пор пока не будет введены данные, удовлетворяющие условиям.
Добавлено: 24 янв 2005, 19:41
Дмит
Например так
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
If TextBox1.Text = "" Then
MsgBox "Введите текст"
KeyCode = 0
End If
End If
End Sub
При нажатии Enter. если TextBox1.Text = "" появится сообщение и фокус из TextBox1 не уйдёт
Добавлено: 25 янв 2005, 09:08
VAA
Это слишком просто, а главное совершенно не влияет на управление перемещением курсора мышью.
Добавлено: 25 янв 2005, 13:29
NiTreX
А что если попробывать поиграться со свойством Enabled остальных элементов управления?
Добавлено: 25 янв 2005, 17:36
Дмит
Если при вводе данных участвует мышь, то используй событие TextBox1_Exit, возникающее при покидании фокуса из TextBox1.
И там проверь введённый текст.
Добавлено: 27 янв 2005, 10:57
VAA
To NiTrex:
Поиграл с Enabled, а заодно и с Locked. Мешают кнопки, присутствующие на форме... и реакция после исправления, то есть после введения данных, удовлетворяющих условию.
To Дмит:
Свойство Exit может быть и удобно для проверки условия, но не возвращает фокус обратно...
Может быть всё-таки есть какой-нибудь метод, позволяющий установить курсор в форме... туда, куда надо???
Добавлено: 21 фев 2005, 02:44
Naeel Maqsudov
Код: Выделить всё
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Text <> "2" Then Cancel = True
End Sub
Вот после этого, если курсор попадет в TextBox1, то никакими силами его не передвинуть (ни мышью, ни клавой) до тех пор пока двойку не введешь.
Для перемещения курсора используется метод XXX.SetFocus, но он тут совсем не нужен. Достатосно Cancel=true