Привет всем!
У меня есть некая форма (точнее, 118-General Ledger Setup)
Задача состоит в том, чтобы при открытии формы почти всем пользователям запрещалось редактировать 99% контролов (а точнее, все контролы, кроме одного).
И нескольким оставшимся пользователям допускалось бы редактировать сразу всё.
Для этого на триггере OnOpenForm вызывается простенькая ф-ция, сравнивающая USERID с нужным
И далее что-то типа
CurrForm."Allow Posting From".EDITABLE:=FALSE;
CurrForm."Allow Posting To".EDITABLE:=FALSE;
CurrForm."Local Address Format".EDITABLE:=FALSE;
... и идёт длинное-длинное перечисление всех контролов на форме.
Решение, само по себе работает, но какое-то оно "неряшливое"
Можно ли как-то это оптимизировать?
Фактически всё сводится к управлению одним единственным контролом, который должен быть Enabled на фоне всей остальной Disabled-формы.
Но тупо присвоить всей форме Disabled, а потом одному-единственному контролу Enabled Navision мне не позволяет ;(
Подскажите, как это можно оптимизировать? Чтобы не указывать в коде названия всех-всех контролов.
ЗЫ: Пока додумался только переносить контролы на каждой вкладке в отдельные фреймы. И этим фреймам уже ставить св-во Disabled. Так писанины получается гораздо меньше.
Но! Возможно, есть какое-то более продвинутое решение (Control ID в цикле. Или как-то через RecordRef можно до них всех добраться?)
|