Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перемещение по форме - SetFocus
 
 автор: kot_k_k   (16.09.2009 в 12:18)   личное сообщение
 
 

На форме есть Поле1, Поле2, Поле3, Поле4, Поле5
Задано: При потере фокуса Полем2 - если Поле5=true то переход на новую строку, если false то Поле3.SetFocus

в свойствах Поле2, Поле3, - "потеря фокуса" задан переход на следующее поле - Поле3, Поле4 соотвественно, но если Поле2 имеет фокус и мышкой щелкаешь на Поле1 - Поле1 не получает фокус, а Поле3 получает (т.к. обработка события). еще раз по Полю1 мышкой - получает фокус Поле4.
Вопрос как заставить в этом случае Получать фокус Полю1?
Как выловить это нажатие мышью??

  Ответить  
 
 автор: osmor   (16.09.2009 в 12:53)   личное сообщение
 
 

ну все происходит согласно заложенной логике
А зачем все это? сделайте поля 3 и 4 недоступными при Поле5=true

  Ответить  
 
 автор: kot_k_k   (16.09.2009 в 13:03)   личное сообщение
 
 

Но свойство Доступ - работает со всей формой.
Поля3-4 нужны не для всех записей на форме и учитавая дикость Юзеров к ним доступ лучше не давать. Я даже проверку на полчение фокуса этими полями написал.

  Ответить  
 
 автор: osmor   (16.09.2009 в 13:15)   личное сообщение
 
 

Но свойство Доступ - работает со всей формой.


на событие "текущая запись" переводите фокус в поле2, а поля 3-4 делайте доступными в зависимости от поля 5

  Ответить  
 
 автор: Анатолий (Киев)   (16.09.2009 в 12:54)   личное сообщение
 
 

Попробуйте так:
на Поле1_MouseDown - Me!Поле1.Tag = "!"
на Поле2_LostFocus и Поле3_LostFocus первой строкой - If Len(Me!Поле1.Tag)>0 Then Exit Sub
на Поле1_GotFocus - Me!Поле1.Tag = ""

Или обрабатывайте не LostFocus, а KeyDown. Если нажата Enter или Tab - передход на Поле2 или Поле3.

  Ответить  
 
 автор: kot_k_k   (16.09.2009 в 12:58)   личное сообщение
 
 

Мысля, буду пробовать.
спасибо

  Ответить  
 
 автор: Дядя Федор   (16.09.2009 в 13:11)   личное сообщение
 
 

Вообще-то событие "потеря фокуса" срабатывает только при получении фокуса другим эл.управления.
Поэтому, все зависит от того, куда кликнет пользователь. Отсюда вывод-надо проверять "получение фокуса" у поля 1.
Если есть возможность, лучше обрабатывать "обновление" или что-то в этом роде.

  Ответить  
 
 автор: Lukas   (16.09.2009 в 13:37)   личное сообщение
 
 

Может так:?

Private Sub Поле2_LostFocus()
    If Me.Поле5 Then DoCmd.GoToRecord acDataForm, Me.Name, acNext
End Sub

Последовательность переходов по контролам задать штатными индексами перехода по TAb.

  Ответить  
 
 автор: kot_k_k   (16.09.2009 в 13:50)   личное сообщение
 
 

Не, проблем с логикой движения нет.
Есть неудобство при получении Полем2 фокуса, потом срабатывает Поле3, Поле4 (как положено) но если необходимо вернуться на Поле1 (мышей) - цепочку не разорвать.

Дяде Федору - "Обновление" не всегда удобно, его могли и необновлять.
При нажатии кнопки мыши на Поле1 срабатывает Поле2_Потеряфокуса - Переход на след Поле3, а Поле1 не получает фокуса.

  Ответить  
 
 автор: kot_k_k   (16.09.2009 в 14:24)   личное сообщение
 
 

Уря Получилось, использовал KeyDown, Анатолий спасибо напомнил про функцию

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList