Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Общие вопросы > Получение всех компонентов всех форм проекта |
Автор: MacTep 17.4.2012, 13:11 | ||
Есть большой проект, в котором решено создать разграничение прав доступа пользователей. Для этого необходимо получить список всех форм проекта и всех компонентов на этих формах. Проблема в том, что формы не создаются автоматически при запуске программы, а создаются динамически при их вызове:
|
Автор: Vaskevych 17.4.2012, 14:58 | ||||
Можна написать проц. типа:
и заменить все модал на
Правда есть минусы нужно пройтись по всех формах для создания списка. |
Автор: MacTep 18.4.2012, 14:22 |
То есть при самом первом запуске программы загрузить таким образом все данные о формах, которые есть в проекте (естественно при этом вручную в коде указать, какие формы обходить), правильно понимаю? |
Автор: Snowy 18.4.2012, 15:42 |
Можно обойти все формы при помощи Screen.FormCount и Screen.Forms |
Автор: MacTep 18.4.2012, 17:30 | ||||
Даже тогда, когда эти формы не созданы в памяти? Все очень просто:
![]() А так:
|
Автор: MacTep 19.4.2012, 18:56 |
Видимо все же никак... |
Автор: northener 20.4.2012, 00:55 |
Видимо придётся как-то переосмыслить решение "создать разграничение прав доступа пользователей". Но если сей "большой проект" не ваш, то вы сразу пошли (или вас направили) по неверному пути. т.е. нужно было сразу от этой задачи отказаться. |
Автор: Akella 20.4.2012, 10:33 |
а зачем сразу в одой процедуре получать все формы, какаой в этом смысл? |
Автор: kami 22.4.2012, 17:02 | ||
Как можно что-то сделать с тем, чего нет? Имхо, основанное на своем опыте - пусть каждая форма/объект при создании сам разбирается, что с ним можно делать, а что нельзя: берет откуда-нибудь права доступа, Enabl-ит/Disabl-ит компоненты. Только всё равно в каждом методе придется проверять права, иначе какой-нибудь умник сторонней программой "заенаблит" кнопочки и пиши пропало. |
Автор: superVad 22.4.2012, 19:44 |
MacTep, Как вариант - сделай общего предка для всех окон, который при создании (или показе) будет заниматься правами. |
Автор: MacTep 24.4.2012, 06:31 | ||||||
|
Автор: MetalFan 24.4.2012, 07:15 |
Ну на худой конец можно "прошерстить" dfm-ки проекта... |
Автор: MacTep 24.4.2012, 17:43 |
Хыыы, да это уж очень худой конец ![]() ![]() |
Автор: superVad 24.4.2012, 20:16 | ||||
Создаешь пустую форму. И реализуешь в ее создании или показе, что тебе надо с правами там делать. Такое вот в пас файле что то:
И наследуешь остальные формы от нее уже. Т.е. меняешь TForm на TfrmModal:
В FormCreate, FormShow и т.п. (там где будет код в предке) потомков надо добавить inherited что бы выполнился код предка. Как то так - может что то упустил. |
Автор: MacTep 24.4.2012, 20:54 | ||||
Понятно, наверное друг друга не совсем поняли. Это немного не то, что мне надо. |
Автор: northener 24.4.2012, 23:53 | ||
Я вот тоже не понимаю, что же вам на самом деле надо? |
Автор: MacTep 25.4.2012, 13:23 |
Мой вопрос относится не к проверке прав при создании формы и выставлению определенных контролов в определенное состояние, а к созданию интерфейса, позволяющего сами значения доступов задать в определенной структуре (бд, файл или не важно что - не суть), чтобы потом уже эту информацию использовать при создании каждой формы. |