Показать сообщение отдельно
Старый 31.01.2011, 15:12   #1  
jopagames2 is offline
jopagames2
Участник
 
151 / 12 (1) ++
Регистрация: 11.02.2010
Привет всем!

У меня есть некая форма (точнее, 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 можно до них всех добраться?)