|
|
|
Работа с меню
|
|||
|---|---|---|---|
|
#18+
День добрый всем!!! Ситуация следующая: Разрабатываю програмулину. В ней имеется разграничение доступа. Т.е. для конкретного пользователя необходимо обозначить доступные пункты меню. В конструкторе меню конкретный пункт будет скрыт, если перед наименование пункта поставить "/". Вопрос как скрыть пункт программно? И еще. Планируется следующее: В процессе разработки в программу будут добавляться новые пункты меню, каждый из которых необходимо отразить в разграничении доступа. Как бы такое организовать программно? Т.е. при организации нового пункта меню, этот пункт автоматически должен попасть в форму с разграничением доступа...довольно абстрактно, конечно, но может быть подскажите хоть в какую сторону копать? Всем заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 13:12 |
|
||
|
Работа с меню
|
|||
|---|---|---|---|
|
#18+
Не пользуйся конструктором и пиши код меню сам или копируй и дорабатывай напильником то, что он сгенерит. Например, засерить пункт меню по условию можно простой командой SET SKIP OF Код: plaintext 1. 2. Код: plaintext Есть еще ОО-надстройки над фоксовским меню, но пока ИМХО не очень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 14:23 |
|
||
|
Работа с меню
|
|||
|---|---|---|---|
|
#18+
Спасибо!!! А не подскажите как получить структуру меню...ну скажем в какой нибудь массив? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 16:31 |
|
||
|
Работа с меню
|
|||
|---|---|---|---|
|
#18+
anatoliy_ioffСпасибо!!! А не подскажите как получить структуру меню...ну скажем в какой нибудь массив?Получить откуда? Если из дизайнера, то его файлы *.mnx - не что иное как таблицы в формате DBF, их можно просматривать и запрашивать в массив, например, SELECT-ом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2007, 22:10 |
|
||
|
Работа с меню
|
|||
|---|---|---|---|
|
#18+
Kuklachev anatoliy_ioffСпасибо!!! А не подскажите как получить структуру меню...ну скажем в какой нибудь массив?Получить откуда? Если из дизайнера, то его файлы *.mnx - не что иное как таблицы в формате DBF, их можно просматривать и запрашивать в массив, например, SELECT-ом. У меня меню находится на форме . Создаю я его программмно командами DEFINE MENU, DEFINE PAD и т.д. (навязано на init формы). как получить структуру в массив? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2007, 22:45 |
|
||
|
Работа с меню
|
|||
|---|---|---|---|
|
#18+
Никак. Нет такой возможности. Если Вы объясните зачем Вам это нужно, то, возможно, Вам подскажут и пути решения. Обычно поступают наоборот: хранят в таблицах структуру меню, а потом, на основании этой структуры строят собственно меню. Для FoxPro стандартная идеология - одно общее меню на главной форме. Динамически меняющееся при активации/деактивации соответсвующих форм. Пытаться лепить меню на каждой форме - не лучшее решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2007, 00:09 |
|
||
|
Работа с меню
|
|||
|---|---|---|---|
|
#18+
ВладимирМНикак. Нет такой возможности. Если Вы объясните зачем Вам это нужно, то, возможно, Вам подскажут и пути решения. Обычно поступают наоборот: хранят в таблицах структуру меню, а потом, на основании этой структуры строят собственно меню. Для FoxPro стандартная идеология - одно общее меню на главной форме. Динамически меняющееся при активации/деактивации соответсвующих форм. Пытаться лепить меню на каждой форме - не лучшее решение. Задумка следующая: В программе имеется разграничение доступа. У каждого пользователя свой набор доступных пунктов меню. На данном этапе разработки, перечень всех нужных пунктов меню еще не определен (совершенно однозначно, что потом будут добавляться новые пункты). Хотелось бы атоматически формировать на форме список (дерево) меню (чтобы каждый раз в двух местах не править), в котором администратор будет определять делать ли конкретный пункт меню доступным конкретному пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 10:59 |
|
||
|
Работа с меню
|
|||
|---|---|---|---|
|
#18+
Логика доступа строится по другому принципу. Доступными или не доступными для пользователя должны быть опеределенные типы операций . Не пункты меню, а именно некие "действия". Ну, например, пользователь не должен видеть некие типы документов. Да, конечно, можно заблокировать определенный (конкретный) пункт меню. Но все дело в том, что в более-менее большом приложении, как правило, есть несколько вариантов доступа к одному и тому же документу. Разные пункты меню, кнопки на форме и т.д. и т.п. Другими словами, создается специальная таблица, где расписаны определенные типы операций. Далее эта таблица "связывается" с конкретным пользователем и выставляются "флаги": доступен или не доступен данному пользователю данный тип операции. Никакого отношения к каким-либо объектам приложения эта таблица вообще не имеет. Далее, перед выполнение соответствующих операций, где бы в приложении ни потребовалось это действие, делается поиск по таблицам доступа для проверки факта доступности или не доступности данной операции для данного пользователя. И по факту этого анализа решают можно или нельзя идти дальше. Т.е. вообще-то, все решается банальным указанием функции в опции SKIP FOR для каждого пункта меню. Эта функция принимает в качестве параметра тип выполняемой операции и возвращает .T. или .F. в зависимости от того, можно ли данному пользователю это делать. В момент создания пункта ты ведь знаешь, какую именно операцию этот пункт меню должен выполнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2007, 12:36 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34346775&tid=1589826]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 253ms |
| total: | 428ms |

| 0 / 0 |
