Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Работа с меню / 9 сообщений из 9, страница 1 из 1
21.02.2007, 13:12
    #34346775
anatoliy_ioff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с меню
День добрый всем!!!

Ситуация следующая:
Разрабатываю програмулину. В ней имеется разграничение доступа. Т.е. для конкретного пользователя необходимо обозначить доступные пункты меню. В конструкторе меню конкретный пункт будет скрыт, если перед наименование пункта поставить "/". Вопрос как скрыть пункт программно?

И еще. Планируется следующее:

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

Всем заранее спасибо
...
Рейтинг: 0 / 0
21.02.2007, 13:57
    #34347017
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с меню
См. SET SKIP
...
Рейтинг: 0 / 0
21.02.2007, 14:23
    #34347135
Kuklachev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с меню
Не пользуйся конструктором и пиши код меню сам или копируй и дорабатывай напильником то, что он сгенерит.

Например, засерить пункт меню по условию можно простой командой SET SKIP OF
Код: plaintext
1.
2.
IF m.UserType == "Лох" THEN
    SET SKIP OF BAR  2  OF SomePopup .T.
ENDIF
Или так:
Код: plaintext
SET SKIP OF BAR  2  OF SomePopup m.UserType == "Лох"
Во втором случае условие будет проверяться динамически при каждом открытии меню. Этим нужно пользоваться осторожно.

Есть еще ОО-надстройки над фоксовским меню, но пока ИМХО не очень.
...
Рейтинг: 0 / 0
21.02.2007, 16:31
    #34347754
anatoliy_ioff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с меню
Спасибо!!!

А не подскажите как получить структуру меню...ну скажем в какой нибудь массив?
...
Рейтинг: 0 / 0
21.02.2007, 22:10
    #34348571
Kuklachev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с меню
anatoliy_ioffСпасибо!!!

А не подскажите как получить структуру меню...ну скажем в какой нибудь массив?Получить откуда?
Если из дизайнера, то его файлы *.mnx - не что иное как таблицы в формате DBF,
их можно просматривать и запрашивать в массив, например, SELECT-ом.
...
Рейтинг: 0 / 0
22.02.2007, 22:45
    #34351423
anatoliy_ioff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с меню
Kuklachev anatoliy_ioffСпасибо!!!

А не подскажите как получить структуру меню...ну скажем в какой нибудь массив?Получить откуда?
Если из дизайнера, то его файлы *.mnx - не что иное как таблицы в формате DBF,
их можно просматривать и запрашивать в массив, например, SELECT-ом.

У меня меню находится на форме . Создаю я его программмно командами DEFINE MENU, DEFINE PAD и т.д. (навязано на init формы). как получить структуру в массив?
...
Рейтинг: 0 / 0
23.02.2007, 00:09
    #34351486
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с меню
Никак. Нет такой возможности.

Если Вы объясните зачем Вам это нужно, то, возможно, Вам подскажут и пути решения. Обычно поступают наоборот: хранят в таблицах структуру меню, а потом, на основании этой структуры строят собственно меню.

Для FoxPro стандартная идеология - одно общее меню на главной форме. Динамически меняющееся при активации/деактивации соответсвующих форм. Пытаться лепить меню на каждой форме - не лучшее решение.
...
Рейтинг: 0 / 0
26.02.2007, 10:59
    #34354292
anatoliy_ioff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с меню
ВладимирМНикак. Нет такой возможности.

Если Вы объясните зачем Вам это нужно, то, возможно, Вам подскажут и пути решения. Обычно поступают наоборот: хранят в таблицах структуру меню, а потом, на основании этой структуры строят собственно меню.

Для FoxPro стандартная идеология - одно общее меню на главной форме. Динамически меняющееся при активации/деактивации соответсвующих форм. Пытаться лепить меню на каждой форме - не лучшее решение.

Задумка следующая:
В программе имеется разграничение доступа. У каждого пользователя свой набор доступных пунктов меню. На данном этапе разработки, перечень всех нужных пунктов меню еще не определен (совершенно однозначно, что потом будут добавляться новые пункты). Хотелось бы атоматически формировать на форме список (дерево) меню (чтобы каждый раз в двух местах не править), в котором администратор будет определять делать ли конкретный пункт меню доступным конкретному пользователю.
...
Рейтинг: 0 / 0
26.02.2007, 12:36
    #34354625
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с меню
Логика доступа строится по другому принципу.

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

Ну, например, пользователь не должен видеть некие типы документов. Да, конечно, можно заблокировать определенный (конкретный) пункт меню. Но все дело в том, что в более-менее большом приложении, как правило, есть несколько вариантов доступа к одному и тому же документу. Разные пункты меню, кнопки на форме и т.д. и т.п.

Другими словами, создается специальная таблица, где расписаны определенные типы операций. Далее эта таблица "связывается" с конкретным пользователем и выставляются "флаги": доступен или не доступен данному пользователю данный тип операции. Никакого отношения к каким-либо объектам приложения эта таблица вообще не имеет.

Далее, перед выполнение соответствующих операций, где бы в приложении ни потребовалось это действие, делается поиск по таблицам доступа для проверки факта доступности или не доступности данной операции для данного пользователя. И по факту этого анализа решают можно или нельзя идти дальше.

Т.е. вообще-то, все решается банальным указанием функции в опции SKIP FOR для каждого пункта меню. Эта функция принимает в качестве параметра тип выполняемой операции и возвращает .T. или .F. в зависимости от того, можно ли данному пользователю это делать. В момент создания пункта ты ведь знаешь, какую именно операцию этот пункт меню должен выполнить.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Работа с меню / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]