Перемещение в форме Exel?

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
VAA
Сообщения: 6
Зарегистрирован: 05 июл 2004, 14:36

Проверяю условия при вводе текста в TextBox. Если условия не выполняются, появляется сообщение о соответствующем нарушении условия. Как при этом "удержать" курсор в TextBox, до тех пор пока не будет введены данные, удовлетворяющие условиям.
Дмит
Сообщения: 145
Зарегистрирован: 27 ноя 2004, 22:23
Контактная информация:

Например так
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 не уйдёт
VAA
Сообщения: 6
Зарегистрирован: 05 июл 2004, 14:36

Это слишком просто, а главное совершенно не влияет на управление перемещением курсора мышью.
NiTreX
Сообщения: 2
Зарегистрирован: 25 янв 2005, 13:17

А что если попробывать поиграться со свойством Enabled остальных элементов управления?
Я не волшебник, я только учусь...
Дмит
Сообщения: 145
Зарегистрирован: 27 ноя 2004, 22:23
Контактная информация:

Если при вводе данных участвует мышь, то используй событие TextBox1_Exit, возникающее при покидании фокуса из TextBox1.
И там проверь введённый текст.
VAA
Сообщения: 6
Зарегистрирован: 05 июл 2004, 14:36

To NiTrex:
Поиграл с Enabled, а заодно и с Locked. Мешают кнопки, присутствующие на форме... и реакция после исправления, то есть после введения данных, удовлетворяющих условию.
To Дмит:
Свойство Exit может быть и удобно для проверки условия, но не возвращает фокус обратно...

Может быть всё-таки есть какой-нибудь метод, позволяющий установить курсор в форме... туда, куда надо???
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Код: Выделить всё

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  If TextBox1.Text <> "2" Then Cancel = True
End Sub
Вот после этого, если курсор попадет в TextBox1, то никакими силами его не передвинуть (ни мышью, ни клавой) до тех пор пока двойку не введешь.

Для перемещения курсора используется метод XXX.SetFocus, но он тут совсем не нужен. Достатосно Cancel=true
Ответить