|
Модераторы: Poseidon, Snowy, bems, MetalFan |
|
MacTep |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Есть большой проект, в котором решено создать разграничение прав доступа пользователей. Для этого необходимо получить список всех форм проекта и всех компонентов на этих формах. Проблема в том, что формы не создаются автоматически при запуске программы, а создаются динамически при их вызове:
Это сообщение отредактировал(а) MacTep - 17.4.2012, 13:12 -------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
Vaskevych |
|
||||
Delphi Developer Профиль Группа: Участник Сообщений: 43 Регистрация: 30.12.2009 Где: UA. Rovno Репутация: нет Всего: нет |
Можна написать проц. типа:
и заменить все модал на
Правда есть минусы нужно пройтись по всех формах для создания списка. Это сообщение отредактировал(а) Vaskevych - 17.4.2012, 14:59 |
||||
|
|||||
MacTep |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
То есть при самом первом запуске программы загрузить таким образом все данные о формах, которые есть в проекте (естественно при этом вручную в коде указать, какие формы обходить), правильно понимаю?
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
Snowy |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Можно обойти все формы при помощи Screen.FormCount и Screen.Forms
|
|||
|
||||
MacTep |
|
||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Даже тогда, когда эти формы не созданы в памяти?
Все очень просто:
А так:
Это сообщение отредактировал(а) MacTep - 18.4.2012, 18:02 -------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
||||
|
|||||
MacTep |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Видимо все же никак...
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
northener |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Видимо придётся как-то переосмыслить решение "создать разграничение прав доступа пользователей". Но если сей "большой проект" не ваш, то вы сразу пошли (или вас направили) по неверному пути. т.е. нужно было сразу от этой задачи отказаться. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
Akella |
|
|||
Творец Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
а зачем сразу в одой процедуре получать все формы, какаой в этом смысл?
|
|||
|
||||
MacTep |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Было бы круто получить ответ на вопрос почему вы так думаете?
Чтобы можно было на каждый компонент определенной формы проставить разрешающие или запрещающие права (скажем, свойства компонентов Enabled или Visible поставить в True/False). -------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
kami |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
Как можно что-то сделать с тем, чего нет? Имхо, основанное на своем опыте - пусть каждая форма/объект при создании сам разбирается, что с ним можно делать, а что нельзя: берет откуда-нибудь права доступа, Enabl-ит/Disabl-ит компоненты. Только всё равно в каждом методе придется проверять права, иначе какой-нибудь умник сторонней программой "заенаблит" кнопочки и пиши пропало. |
|||
|
||||
superVad |
|
|||
Опытный Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
MacTep, Как вариант - сделай общего предка для всех окон, который при создании (или показе) будет заниматься правами.
|
|||
|
||||
MacTep |
|
||||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Все правильно говорите, именно так и происходит. Но мой вопрос в этой теме скорее относится не к проверке прав при создании формы и выставлению определенных контролов в определенное состояние, а к созданию интерфейса, позволяющего сами значения доступов проставить, чтобы потом уже эту информацию использовать при создании каждой формы.
-------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
||||
|
|||||
MetalFan |
|
|||
Аццкий Сотона Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
Ну на худой конец можно "прошерстить" dfm-ки проекта...
-------------------- There are always someone smarter than you... |
|||
|
||||
MacTep |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1292 Регистрация: 4.8.2003 Где: г. Самара Репутация: 4 Всего: 4 |
Хыыы, да это уж очень худой конец ))) Лучше уж так, как предлагал Vaskevych во второй ноте -------------------- (A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :) |
|||
|
||||
superVad |
|
||||
Опытный Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Создаешь пустую форму. И реализуешь в ее создании или показе, что тебе надо с правами там делать. Такое вот в пас файле что то:
И наследуешь остальные формы от нее уже. Т.е. меняешь TForm на TfrmModal:
В FormCreate, FormShow и т.п. (там где будет код в предке) потомков надо добавить inherited что бы выполнился код предка. Как то так - может что то упустил. |
||||
|
|||||
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |