Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Настройки форм  [new]
Sashaua
Member

Откуда: Kiev
Сообщений: 184
Доброго дня всем.
Для хранения настроек использую две таблицы
Таблица SETTING
IDNAMEID_TYPEID_GROUP


Таблица SETTING_USERS
IDID_SETTINGID_USERVALUE


Есть ряд настроек которые показывают или скрывают контролы на разных формах.
Вопрос, как елегантно реализовать подход который позволит легко добавлять новые настройки? в идеале хочеться иметь одну функцию которой передать форму к которой необходимо применить настройки, и уже в нутри процедуры реализовать магтю.
Какой вы подход используете ?
29 май 21, 19:37    [22328845]     Ответить | Цитировать Сообщить модератору
 Re: Настройки форм  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65922
Блог
Sashaua
Какой вы подход используете ?

0. Учиться программировать до того, как приходить на форум, и задавать вопросы в ходе обучения.
1. Мыслить достаточно ясно, чтобы хотя бы суметь задать толковый вопрос.
2. Не страдать фигнёй.
29 май 21, 21:07    [22328867]     Ответить | Цитировать Сообщить модератору
 Re: Настройки форм  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6495
Sashaua,

Я видел проекты, в которых магия реализовывалась следующими путями:
- хранение в БД dfm формы
- реализация динамического создания форм на основе некоторых скриптовых движков (зачастую самописных)
30 май 21, 02:16    [22328914]     Ответить | Цитировать Сообщить модератору
 Re: Настройки форм  [new]
northener
Member

Откуда: Москва
Сообщений: 99
Sashaua, а при чем тут настройки каких-то форм?
И БД при чём?
Вы свою задачу, которую вы делаете можете описать?
30 май 21, 03:01    [22328915]     Ответить | Цитировать Сообщить модератору
 Re: Настройки форм  [new]
Sashaua
Member

Откуда: Kiev
Сообщений: 184
northener,

есть допустим настройка
таблица SETTING
IDNAMEID_TYPEID_GROUP
1Просмотр карточки клиентов11


таблица SETTING_USERS

IDID_SETTINGID_USERVALUE
1123True


Означает что пользователю с ID 23 доступер просмотр карточки клиентов. Дальше на форме где есть меню или кнопка которая отображает карточку клиентов отображается или скрывается контрол.
Для формы есть процедура
procedure apply_form_settings;
begin
mm_customercard.Visible:=Setting.s_1;
end;

Для каждой формы есть своя процедура которая применяет настройки. Хотел спросить кто как решает у себя такую задачу.
Возможно имеет смысл иметь одину процедуру которую использовать для всех форм в которую передать форму к которой необходимо применить настройки и в нутри такой процедуры выполнять магию?
31 май 21, 00:47    [22329066]     Ответить | Цитировать Сообщить модератору
 Re: Настройки форм  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 53435

Sashaua
Возможно имеет смысл иметь одину процедуру которую использовать для всех форм в которую
передать форму к которой необходимо применить настройки и в нутри такой процедуры
выполнять магию?

Это будет нарушением ООД.

Форма инкапсулирует UI функционал (кнопку в данном случае) и лезть к ней извне - плохая идея.

Юнит или класс, хранящий в себе права текущего пользователя, к которому обращается форма
при своём создании чтобы решить показывать кнопку или нет - гораздо правильнее.

Posted via ActualForum NNTP Server 1.5

31 май 21, 01:03    [22329069]     Ответить | Цитировать Сообщить модератору
 Re: Настройки форм  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65922
Блог
Sashaua
Хотел спросить кто как решает у себя такую задачу.

Есть объект, который кэширует права пользователя. При старте приложения он считывает список текущих грантов, при получении сигнала об изменениях - перечитывает. У action-а есть свойство "название привилегии". Соответственно, отсутствие этой привилегии в описанном списке означает автоматический visible = false.

Ну, для полноты картины человек с ролью "разработчик" автоматически обладает всеми привилегиями, но может в рантайме отключить некоторые - чтобы проверить, как будет выглядеть и вести себя приложение в этом случае.

Сообщение было отредактировано: 31 май 21, 01:05
31 май 21, 01:12    [22329070]     Ответить | Цитировать Сообщить модератору
 Re: Настройки форм  [new]
Exteris
Member

Откуда: Новосибирск
Сообщений: 1034
Sashaua
в идеале хочеться иметь одну функцию которой передать форму к которой необходимо применить настройки

Ну так имейте. У меня когда-то было примерно так -
Таблица
iduseridformnamecontrolnamevisiblereadonly

И процедура в которую передается форма, и которая выдергивает из таблицы данные по доступу для конкретного пользователя, пробегает по всем контролам формы и делает им нужные разрешения.
Есть нюансы, но в целом вариант рабочий.
31 май 21, 08:04    [22329099]     Ответить | Цитировать Сообщить модератору
 Re: Настройки форм  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32387

31.05.2021 08:04, Exteris пишет:
> Ну так имейте. У меня когда-то было примерно так -
> Таблица
> id userid formname controlname visible readonly

я бы добавил ещё app_name.
а лучше app_GUID, чтоб у юзера не возникало соблазна переименовать аппликацию.


Posted via ActualForum NNTP Server 1.5

31 май 21, 12:19    [22329240]     Ответить | Цитировать Сообщить модератору
 Re: Настройки форм  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 15216
Я добавил поле blob и храню там json, хотя.... хватило бы и обычного varchar.
А в json уже сам извращаяся как хочешь.
31 май 21, 12:31    [22329254]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить