Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
397 / 140 / 39
Регистрация: 16.03.2013
Сообщений: 1,548

Перевод фокуса после закрытия сообщения

09.10.2019, 08:26. Показов 1603. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите, как можно перевести фокус ввода на поле после закрытия какого-то информационного сообщения?
Visual Basic
1
2
3
4
5
...
If Me.pole <> 1 Then
MsgBox "Вы не верно ввели цифру, попробуйте еще раз"
Me.pole.SetFocus ' не работает, фокус перемещается на кнопку закрытия формы
End If
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.10.2019, 08:26
Ответы с готовыми решениями:

Перевод фокуса после окончания редактирования ячейки JTable нажатием Enter
Подскажите пожалуйста, каким образом при нажатии клавиши Enter можно перевести фокус на следующую строку того же столбца таблицы? В...

Перевод фокуса на форму
Есть форма, на которой button1. Мне надо получить код клавиши клавиатуры, на которую я нажимаю. Для этого захожу в свойства формы,...

Перевод фокуса между формами.
Допустим есть у меня форма form1 по нажатию кнопки на ней открывается другая форма form2. как сделать так чтобы при открытии form2 на form1...

9
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
09.10.2019, 08:44
На таком примере все работает
Visual Basic
1
2
3
4
5
6
Private Sub Поле0_AfterUpdate()
        If Me.Поле0 <> 1 Then
            MsgBox "Вы не верно ввели цифру, попробуйте еще раз"
            Me.Поле2.SetFocus
        End If
End Sub
Выкладывайте свой ... .
Миниатюры
Перевод фокуса после закрытия сообщения  
1
Эксперт MS Access
 Аватар для ltv_1953
17536 / 7288 / 1663
Регистрация: 21.06.2012
Сообщений: 13,957
09.10.2019, 08:48
Поторопился, не всегда так, бывает остается на селекторе записи.
1
397 / 140 / 39
Регистрация: 16.03.2013
Сообщений: 1,548
09.10.2019, 08:49  [ТС]
Visual Basic
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
Private Sub Pass_AfterUpdate()
'On Error Resume Next
 
 
   If Len(DLookup("[ФИО]", "[Доступ]", "[Пароль] = '" & Me.Pass & "'") & "") = 0 Then
   
 
 Me.Pass = ""
 
MsgBox "Программа регистрации не обнаружила вашу учетную запись в базе данных!Повторите сканирование!" _
& vbCr & "                    При повторяющейся ошибке обратитесь к администратору базы данных!"
 
Me.Pass.SetFocus
 
  Else
 
Me.ФИО = DLookup("[ФИО]", "[Доступ]", "[Пароль] = '" & Me.Pass & "'") 'временное поле для визуальной отработки
 
  Dim rst As DAO.Recordset
  Set rst = CurrentDb.OpenRecordset("ФиксацияВремени") 'Запись данных в таблицу
  rst.AddNew
  rst!ФИО = DLookup("[ФИО]", "[Доступ]", "[Пароль] = '" & Me.Pass & "'")
  rst!Дата = Date
  rst!Время = Time
  
    rst.Update
 
  End If
  
End Sub
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.10.2019, 09:00
Braser, разделите программу между событиями. Первую часть с проверкой перенесите в событие BeforeUpdate
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Pass_BeforeUpdate(Cancel As Integer)
'On Error Resume Next
 
   If Len(DLookup("[ФИО]", "[Доступ]", "[Пароль] = '" & Me.Pass & "'") & "") = 0 Then
      MsgBox "Программа регистрации не обнаружила вашу учетную запись в базе данных!Повторите сканирование!" _
& vbCr & "                    При повторяющейся ошибке обратитесь к администратору базы данных!"
      Cancel=True
    End If
End Sub
 
Private Sub Pass_AfterUpdate()
  Me.ФИО = DLookup("[ФИО]", "[Доступ]", "[Пароль] = '" & Me.Pass & "'") 'временное поле для визуальной отработки
 
  Dim rst As DAO.Recordset
  Set rst = CurrentDb.OpenRecordset("ФиксацияВремени") 'Запись данных в таблицу
  rst.AddNew
  rst!ФИО = DLookup("[ФИО]", "[Доступ]", "[Пароль] = '" & Me.Pass & "'")
  rst!Дата = Date
  rst!Время = Time
  
  rst.Update
 
End Sub
1
397 / 140 / 39
Регистрация: 16.03.2013
Сообщений: 1,548
09.10.2019, 09:17  [ТС]
Спасибо, стал фокус перемещаться, только есть один нюанс, поле не очищается при этом, старые данные остаются и для повторного сканирования нужно убрать ранее добавленные символы, а так накладка происходит. А желательно бы без участия клавиатуры такую весчь делать. извиняюсь, что не сказал ранее про эту особенность

Добавлено через 3 минуты
...то бишь, отсканировал-> ошибка->сообщение->ок->фокус ввода опять на чистое поле ввода

Добавлено через 2 минуты
Visual Basic
1
Me.Pass = ""
на BeforeUpdate не проходит, может чего-то не так делаю....
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.10.2019, 09:30
Цитата Сообщение от Braser Посмотреть сообщение
есть один нюанс, поле не очищается при этом, старые данные остаются и для повторного сканирования нужно убрать ранее добавленные символы, а так накладка происходит. А желательно бы без участия клавиатуры такую весчь делать.
После Cancel=True напишите команду Me.Undo
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Pass_BeforeUpdate(Cancel As Integer)
'On Error Resume Next
 
   If Len(DLookup("[ФИО]", "[Доступ]", "[Пароль] = '" & Me.Pass & "'") & "") = 0 Then
      MsgBox "Программа регистрации не обнаружила вашу учетную запись в базе данных!Повторите сканирование!" _
& vbCr & "                    При повторяющейся ошибке обратитесь к администратору базы данных!"
      Cancel=True
      Me.Undo 'Возврат к прежнему значению
    End If
End Sub
1
397 / 140 / 39
Регистрация: 16.03.2013
Сообщений: 1,548
09.10.2019, 09:38  [ТС]
Уже пробовал, не помогает

Пока так решил сделать

Visual Basic
1
2
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "frm1"
, не самый лучший вариант конечно.
в форме данных нет, сохранять нечего, просто процедура идентификации по ШК
и окно изображения с камеры
0
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
09.10.2019, 09:48
Лучший ответ Сообщение было отмечено Braser как решение

Решение

Цитата Сообщение от Braser Посмотреть сообщение
Уже пробовал, не помогает
Попробуйте сделать текст выделенным. Тогда следующее считывание сканера просто затрет выделенное
Private Sub Pass_BeforeUpdate(Cancel As Integer)
Visual Basic
1
2
3
4
5
6
7
8
9
10
'On Error Resume Next
 
   If Len(DLookup("[ФИО]", "[Доступ]", "[Пароль] = '" & Me.Pass & "'") & "") = 0 Then
      MsgBox "Программа регистрации не обнаружила вашу учетную запись в базе данных!Повторите сканирование!" _
& vbCr & "                    При повторяющейся ошибке обратитесь к администратору базы данных!"
      Cancel=True
      Me.Pass.SelStart=0               'Выделяем текст
      Me.Pass.SelLength = Len(Me.Pass)
    End If
End Sub
1
397 / 140 / 39
Регистрация: 16.03.2013
Сообщений: 1,548
09.10.2019, 10:02  [ТС]
Спасибо, сейчас все работает как надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.10.2019, 10:02
Помогаю со студенческими работами здесь

Как запретить перевод фокуса пользователем на Form1
Здраствуйте, подскажите пожалуйста, как при откритии второй формы запретить пользователю перевести фокус обратно на первую, ну тоесть,...

Код скрывает панели и очищает эдиты вместо закрытия окна сообщения
procedure TForm1.BitBtn1Click(Sender: TObject); begin k := MessageDlg('Вернуться?', mtWarning, , 0); if k = mrOk then ...

При быстрой победе в игре крестики_нолики не выводилось после сообщения победителя, другие сообщения
Как сделать что при быстрой победе в игре крестики_нолики не выводилось после сообщения победителя, ходит Х или 0. Может использовать...

Поиск строки Treeview чужого окна и перевод на нее фокуса
Помогите! Суть задачи такова. В окне чужой программы имеется дочернее окно с компонентом Treeview (класс TreeView20WndClass). К Treeview...

Перерисовка после снятия фокуса
Доброго времени суток. сделал простенькую анимацию компонента(JPanel) new Thread(new Runnable(){ @Override public void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru