Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ограничения доступа на уровне пользовательского интерфейса
|
|||
|---|---|---|---|
|
#18+
Ситуация следующая: при запуске главной формы из базы тянутся связки вида: название пункта меню и его доступность и имя пакета . В каждом BPL есть функция с одним и тем же названием которая грузит форму. Собственно вопрос: как при формировании меню(во время выполнения программы) назначить каждому пункту меню обработчик событий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2003, 10:32 |
|
||
|
Ограничения доступа на уровне пользовательского интерфейса
|
|||
|---|---|---|---|
|
#18+
У меня сейчас похожая проблема стоит. В планах такое решение: есть в модуле, где будет динамическое меню из базы обрабатываться волшебный функция типа СелектАйтем, которая по свойству Tag из пункта меню будет определять какой обработчик надо вызывать. Эту чудесную функцию вешаешь на все пункты меню (ОнКлик) и конец. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2003, 11:01 |
|
||
|
Ограничения доступа на уровне пользовательского интерфейса
|
|||
|---|---|---|---|
|
#18+
Desil, сделай массив ДОСТУПНЫХ форм. При создании меню для кождого итема задай Tag:= [элемент массива]. А при OnClick получай нужную форму как FormArray[(Sender as TMenuItem).Tag]. Так проще, к тому же в этом же массиве можно объявить переменные, отражающие текущее сосотяние формы нет/есть/выполняет_фоновые_операции (на собственном опыте). У меня вот такой массивчик получился: type TDLLAccess = record AType: Integer; // тип доступа Prm_1: String; // параметр доступа (1) Prm_2: String; // параметр доступа (2) Prm_3: String; // параметр доступа (3) Prm_4: String; // параметр доступа (4) Prm_5: String; // параметр доступа (5) Prm_6: String; // параметр доступа (6) Prm_7: String; // параметр доступа (7) Prm_8: String; // параметр доступа (8) end; type TDLLCmd = record Cmd: Integer; // команда для модуля Prm: String; // параметры end; type TDLLInfo = record DLLName: String; // имя файла модуля DLLCmd: TDLLCmd; // команда DLLAccess: TDLLAccess; // параметры доступа Loaded: Boolean; // текущее состояние: загружена Threaded: Boolean; // текущее состояние: выполняется MItem: TMenuItem; // пункт меню DLLh: Integer; // дескриптор DLL ShowDLLForm : procedure (hW: THandle; OS: TOracleSession; _AccessType: integer; _p1, _p2, _p3, _p4, _p5, _p6, _p7, _p8: PChar; CBProcAddr: TFarProc; var LL: boolean; var TT: boolean); CommandForDLL : procedure (_DLLCmd: integer; var _DLLPrm); end; var DLLInfo: array of TDLLInfo; Так как у каждого отдельно взятого юзверя модулей немного, то DLL-ки я подключаю при регистрации и не выгружаю их до окончания работы программы. Хотя это и не есть гут :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2003, 13:03 |
|
||
|
Ограничения доступа на уровне пользовательского интерфейса
|
|||
|---|---|---|---|
|
#18+
Идея с формами в моем случае абсолютно не подходит, по очень простой причине: на фига заморачиваться. Формы у меня создаются динамически, потому что их немеряно, а юзеров загружать смысла нет. Поэтому разберусь как-нибудь с этой проблемой сама. Большое спасибо за совет!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2003, 08:29 |
|
||
|
Ограничения доступа на уровне пользовательского интерфейса
|
|||
|---|---|---|---|
|
#18+
Делал я подобное для одного проекта , но на меню я не заморачивался и всю проверку посадил в формы. Так как проект был MDI то все формы я наследовал от одной общей формы, где уже был реализован минимальных механизм проверки доступа. Сейчас описывать сложновато будет, надо кучу кода приводить. Но думаю что лучше всего делать именно так. Каждая наследованная форма, переопределяла одну функцию , которая возвращала какоето системное имя формы, класс формы скажем. А сама форма проверяла в базе данных в таблице с пермишынами, имеет ли текущий юзер доступ или нет, елси нет то создание формы не проходило. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2003, 00:13 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=2009&tid=2116909]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 341ms |

| 0 / 0 |
