![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Serggggg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.12.2003 Где: Донецк, Украина Репутация: нет Всего: нет |
Доброго времени суток!
Прошу совета! Дело вот в чём - в главном меню программы есть куча разных элементов (Item'ов). С прогой будут работать несколько отделов предприятия! Желательно, чтобы тупой юзер из 1-го отдела не влез в таблицу (таблицы), с которой работает 2-й отдел! Всё это можно, конечно, блокировать на уровне самой БД. Однако в самой программе лучший способ, как мне кажется, - это просто скрыть пункты меню, которые вызывают процедуры, не нужные юзеру из 1-го отдела. У пунктов меню есть замечательное свойство - Visible! Стоит сказать, что у разных пунктов разная вложенность. И, в принципе, скрывать придется вложенные и вложенные-вложенные пункты. Собственно, вопрос: можно ли как-то универсально описать эту процедуру (как, например, обработку матрицы)? Потому что с оператором Case (User_ID of) долбаться не хочется. Надеюсь, все (или основное) понятно! Спасибо. С уважением, Serggggg. --------------------
C уважением, Serggggg. |
|||
|
||||
| Paradox |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1135 Регистрация: 18.11.2002 Где: Россия Репутация: нет Всего: 1 |
У нас в системе это функционирует созданием в БД таблицы юзеров и к ним привязаны пункты меню им позвлленные по=моему
-------------------- --- |
|||
|
||||
| P@dla |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 9.1.2004 Репутация: нет Всего: нет |
Сделай несколько вариантов главного меню, один экшэн лист (ActionList) и в каждом главном меню назначь экшены (Action) на соответствующие Items. А после выбора юзверем своего отдела назначай форме соответствующее главное меню...
вот пример:
вот форма:
|
||||
|
|||||
| Serggggg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.12.2003 Где: Донецк, Украина Репутация: нет Всего: нет |
Paradox, а клиентская прога хватала индексы пунктов меню или названия из таблицы пунктов?
--------------------
C уважением, Serggggg. |
|||
|
||||
| Serggggg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.12.2003 Где: Донецк, Украина Репутация: нет Всего: нет |
И ещё, можно ли пройтись по всему меню со вложенностью N и за один раз выставить на ВСЕХ пунктах нужный Visible?
--------------------
C уважением, Serggggg. |
|||
|
||||
| Pakshin A. S. |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 5056 Регистрация: 16.2.2003 Репутация: 21 Всего: 61 |
Если меню большая, то долго будет... но это сейчас не актуально.
|
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
Serggggg, можно, рекурсией.
ещё один вариант: у всех юзверей, видящих определённую таблицу должен быть некий общий признак, X. например, номер отдела. или ещё что-то. если его нет, значит, его надо ввести. после этого делаешь полное меню (на всех), привязываешь его к Action'ам при желании, а потом выставляешь в тегах меню (или экшенов) нужный параметр. если нужен не один, например, один юзверь может видеть некоторые меню другого, то их можно комбинировать (например, как в FileAttr: 1 + 2 + 4 + 8 + 26 + 32 + 64 + ... ) на уровне бита всегда можно определить, входит туда нужный номер или нет. 32 бита тебе, я думаю, хватит. хотя можно и просто вести какую-то линковочную таблицу вида [Х, № меню]). при запуске программы получаешь Х, проходишь в цикле все меню/экшены, и проверяешь, есть ли такой "бит" в теге. если нет - выключаешь. с линковочной таблицей сложнее и медленнее, там всё-таки таблицу сосать из базы придётся. -------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
TActionList+RTTI;
-------------------- |
|||
|
||||
| x77 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1255 Регистрация: 25.3.2002 Репутация: 19 Всего: 22 |
Pegas, а чем поможет RTTI? 8)
-------------------- Я никогда не сопротивлялся искушению, поскольку узнал: что мне не нравится, то меня не искушает. © Джордж Бернард Шоу (Ирландия) |
|||
|
||||
| Serggggg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.12.2003 Где: Донецк, Украина Репутация: нет Всего: нет |
Интересная идея с битами. Благодарю за совет. Надо опробовать.
--------------------
C уважением, Serggggg. |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
Посмотрите наш FAQ. Там кое-что есть о RTTI. Там Вы найдете ответ на свой вопрос. Если же не найдете, то пишите, отвечу. -------------------- |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |