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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Setfocus, LostFocus, Me.ActiveControl.Name
 
 автор: dmsrv803   (13.09.2010 в 11:04)   личное сообщение
 
 

Есть контрол и кнопка в форме. Кнопка.Visible = False. При получении фокуса в контрол - Кнопка.Visible = True. При потере фокуса - Кнопка.Visible = False.
Вопрос - А как быть, если фокус передается не какому-то другому контролу, а Кнопке, ведь тогда по событию LostFocus произойдет попытка сделать кнопку невидимой, что приведет к ошибке.

  Ответить  
 
 автор: Анатолий (Киев)   (13.09.2010 в 11:21)   личное сообщение
 
 

Событие LostFocus происходит ДО фактического перемещения фокуса. Если имеется ввиду перемещение фокуса в порядке перехода по Tab, то ошибки не произойдет, фокус получит следующий элемент.

ЗЫ. А проверить было слабо?!

  Ответить  
 
 автор: dmsrv803   (13.09.2010 в 11:49)   личное сообщение
 
 

Наверно я слишком сумбурно описал задачу. Дело вовсе не в ошибке, возникновение которой вполне закономерно, а в том, что при получении фокуса Кнопкой возникает событие LostFocus в контроле, по которому значению свойства Кнопка.Visible присваевается значение True. вернее сказать происходит попытка выполнить это действие, что приводит естественно к ошибке, т.к. нельзя изменить данное свойство, если элемент формы находится в фокусе. Проблема заключается в том, что при потере фокуса контролом, я не могу отследить какому элементу формы передается управление, и соответсвенно если управление получает Кнопка, то не надо ее делать невидмой, а если управление получает какой-то другой контрол, то Кнопка.Visible = True

  Ответить  
 
 автор: Explorer   (13.09.2010 в 12:00)   личное сообщение
 
 

смотреть

Screen.ActiveControl

Screen.PreviousControl

  Ответить  
 
 автор: snipe   (13.09.2010 в 12:04)   личное сообщение
 
 

если кнопка невидима то почему бы не передать фокус нужному контролу принудительно, а если видима то кнопке

например
обрабатывая события формы Текущая запись - проверяем если в поле есть условие то отображаем или скрываем кнопку
событие поля После обновления - в зависимости от данных поля скрываем или отображаем кнопку
событие поля потеря фокуса - проверяем состояние кнопки и передаем фокус либо кнопке либо другому контролу

  Ответить  
 
 автор: dmsrv803   (13.09.2010 в 12:26)   личное сообщение
 
 

To Snipe:
Еще раз - есть контрол в который нужно ввести дату, рядом с контрол рисуем кнопку и делаем ее невидимой. Дальше - когда контрол получает управление - делаем кнопку видимой, когда теряет упрвление - наоборот. предположим, что по нажатию на кнопку открывается календарь, мы выбираем дату и засовывае ее в контрол. Все заеб... т.е. я хотел сказать велеколепно. Но как быть когда управление от контрола переходит к Кнопке, ведь в этом случае возникает событие LostFocus и происходит попытка сделать нашу Кнопку невидимой, а она с минуты на минуту, а может даже и быстрее получит управления. О последствиях Даже думать страшно.....
А Текущая запись, значения контрола здесь вообще не при чем.

  Ответить  
 
 автор: dmsrv803   (13.09.2010 в 12:38)   личное сообщение
 
 

To Анатолий (Киев):
Проверил - действительно ошибка не возникает, а происходит передача управления следующему по Tab контролу. Но в моем случае это ситуацию не меняет.

  Ответить  
 
 автор: Explorer   (13.09.2010 в 18:01)   личное сообщение
21 Кб.
 
 


Но как быть когда управление от контрола переходит к Кнопке, ведь в этом случае возникает событие LostFocus



не надо использовать LostFocus - это незачем ИМХО

  Ответить  
 
 автор: Lukas   (13.09.2010 в 18:52)   личное сообщение
 
 


...
Me.Command10.Visible = Me.ActiveControl.Tag
Me.Command10.TabIndex = Me.ActiveControl.TabIndex + 1
...

Хитро.

  Ответить  
 
 автор: Дядя Федор   (13.09.2010 в 12:52)   личное сообщение
 
 

вызов календарей и калькуляторов вешай на двойной клик по полю. и все.
зы. и всплывающую подсказочку "Двойной клик вызовет календарь"

  Ответить  
 
 автор: dmsrv803   (13.09.2010 в 12:55)   личное сообщение
 
 

не - ну так совсем безпонтово

  Ответить  
 
 автор: dmsrv803   (13.09.2010 в 13:01)   личное сообщение
 
 

Вот небольшой примерчик => http://zalil.ru/29669751

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

Ну в твоем примере еще работать и работать. Календарь неудачный.

  Ответить  
 
 автор: Дядя Федор   (13.09.2010 в 13:40)   личное сообщение
10 Кб.
 
 

Ну как-то.... так. Едем в Москву через Хабаровск.

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

Извини, твой пример не смотрел.

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


dmsrv803
не - ну так совсем безпонтово


+1.
По кнопке нагляднее.

Переход по Tab=Нет (для кнопки.)

  Ответить  
 
 автор: dmsrv803   (13.09.2010 в 14:17)   личное сообщение
 
 


+1.
По кнопке нагляднее.

Переход по Tab=Нет (для кнопки.)


А что это дает? Можно пояснить мысль.

  Ответить  
 
 автор: Lukas   (13.09.2010 в 14:39)   личное сообщение
 
 

Да мало чего дает.

Придумал:
Нужно сделать маленькую форму без рамки с одной кнопочкой (всплывающую).
При получении полем фокуса ее показывать, при потере -скрывать.
Тут только придется позиционировать ее (формочку) с динамической привязкой к активному полю.

Жееесть.

  Ответить  
 
 автор: dmsrv803   (13.09.2010 в 14:58)   личное сообщение
 
 

Согласен что это будет работать и что это - жесть.

  Ответить  
 
 автор: Lukas   (13.09.2010 в 15:42)   личное сообщение
 
 

Есть исчо вариант:
Image или Label вместо кнопки.

  Ответить  
 
 автор: dmsrv803   (13.09.2010 в 15:48)   личное сообщение
 
 

Ну это мне определенно больше нравиться

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