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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Отмена запрета на редактирование отдельного элемента управления формы
 
 автор: timrus   (15.02.2013 в 14:19)   личное сообщение
 
 

Здравствуйте! Помогите решить проблему.
Есть форма Заказы (см. приложение). При обработке события "Текущей запись" реализована следующая логика: если ДатаИсполнения не пустая, то запретить изменения записи, иначе разрешить.
На форме есть флажок "Режим", позволяющий выбрать тип обработки события "Нажатие кнопки" кнопки ПодробноКлиенты:
- обработка с помощью макроса;
- обработка с помощью VBA.

При переходи на запись с закрытым заказом (ДатаИсполнения не пустая) свойство AllowEdits = False применяется ко всей форме, включая флажок "Режим", тем самым запрещая изменять его.
Как сделать так чтобы все элементы управления кроме флажка "Режим" были недоступны, но при этом важно использовать AllowEdits = False для формы, чтобы запретить изменение записи в БД.

Файл с формой http://zalil.ru/34263597

  Ответить  
 
 автор: osmor   (15.02.2013 в 14:56)   личное сообщение
 
 

посмотреть не могу.
Варианты:
1. Обрабатывать клик (точно не помню есть так клик, но по любому что-то есть, например MouseUp) по флажку и менять его значение программно примерно так

Me.Флаг = Not Me.Флаг

2. При переходе на запись пробегаться по коллекции controls формы и менять свойство Locked для всех контролов с типом "поле", поле со списком и т.п.кроме нужного флажка .
3. Вынести флажок на тулбар, ленту и меню.

  Ответить  
 
 автор: timrus   (15.02.2013 в 15:55)   личное сообщение
 
 

Спасибо большое! Событие MouseUp То что нужно!!!

  Ответить  
 
 автор: snipe   (15.02.2013 в 17:23)   личное сообщение
 
 

а если флажок пробелом поставят, а перемещаться по контролам будут клавишей tab

  Ответить  
 
 автор: Анатолий (Киев)   (15.02.2013 в 17:58)   личное сообщение
 
 

Лучше на событие GotFocus делать AllowEdits=True, а на LostFocus AllowEdits= Not IsNull(Me!ДатаИсполнения)
Еще вариант без AllowEdits. На событии Dirty, если Me.ActiveControl.Name <> "Флажок" и Not IsNull(Me!ДатаИсполнения) делать Cancel=True, т.е. отменить редактирование. В этом варианте задействована только одна процедура вместо трех, т.е. и Current обрабатывать не надо.

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