|
|
|
| Здравствуйте! Помогите решить проблему.
Есть форма Заказы (см. приложение). При обработке события "Текущей запись" реализована следующая логика: если ДатаИсполнения не пустая, то запретить изменения записи, иначе разрешить.
На форме есть флажок "Режим", позволяющий выбрать тип обработки события "Нажатие кнопки" кнопки ПодробноКлиенты:
- обработка с помощью макроса;
- обработка с помощью VBA.
При переходи на запись с закрытым заказом (ДатаИсполнения не пустая) свойство AllowEdits = False применяется ко всей форме, включая флажок "Режим", тем самым запрещая изменять его.
Как сделать так чтобы все элементы управления кроме флажка "Режим" были недоступны, но при этом важно использовать AllowEdits = False для формы, чтобы запретить изменение записи в БД.
Файл с формой http://zalil.ru/34263597 | |
|
| |
|
|
|
| посмотреть не могу.
Варианты:
1. Обрабатывать клик (точно не помню есть так клик, но по любому что-то есть, например MouseUp) по флажку и менять его значение программно примерно так
2. При переходе на запись пробегаться по коллекции controls формы и менять свойство Locked для всех контролов с типом "поле", поле со списком и т.п.кроме нужного флажка .
3. Вынести флажок на тулбар, ленту и меню. | |
|
| |
|
|
|
| Спасибо большое! Событие MouseUp То что нужно!!! | |
|
| |
|
|
|
| а если флажок пробелом поставят, а перемещаться по контролам будут клавишей tab | |
|
| |
|
|
|
| Лучше на событие GotFocus делать AllowEdits=True, а на LostFocus AllowEdits= Not IsNull(Me!ДатаИсполнения)
Еще вариант без AllowEdits. На событии Dirty, если Me.ActiveControl.Name <> "Флажок" и Not IsNull(Me!ДатаИсполнения) делать Cancel=True, т.е. отменить редактирование. В этом варианте задействована только одна процедура вместо трех, т.е. и Current обрабатывать не надо. | |
|
| |