Поиск объектов в форме | |
---|---|
Rifat Автор Сообщений: 32 Дата регистрации: 06.02.2012 |
Привет форумчанам.
Существует ли простой способ перебрать в форме, например, все гриды, включая вложенные в различные контейнеры на этапе исполнения формы? Или без рекурсии не обойтись? |
Re: Поиск объектов в форме | |
---|---|
of63 Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Только рекурсия
|
Re: Поиск объектов в форме | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Если под рекурсией вы буквально понимаете вызов чего-то из себя самого, то без этого обойтись, конечно, можно.
|
Re: Поиск объектов в форме | |
---|---|
Vedmak Сообщений: 5949 Откуда: CiTY Дата регистрации: 30.10.2003 |
В данном случае самого понятия "рекурсия" пугаться не стоит. Достаточно тривиальный метод повторного вызова функции. Есть ограничения по уровню вложенности. Надаеюсь на вашей форме не больше 32-х уровней вложенности объектов. Быстродействие метода приемлемое.
Можно использовать sys(1272), но что это меняет ? Например, [attachment 31868 Joxi.jpg] Большинство базовых классов моего framework имеют свойство lock, т.е. блокировка возможности редактирования. В примере метод контейнера в котором перебираются дочерние объекты к которым применяется тоже значение lock. Обращаю внимание, что это не явная рекурсия, а наследование методов. ------------------ Говорить стоит лишь для тех, кто слушает. Исправлено 3 раз(а). Последнее : Vedmak, 10.09.19 23:07 |
Re: Поиск объектов в форме | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Можно пойти от обратного - сделать класс грида, который при инициализации пропишет путь к себе в какое-то свойство-массив (или объект-коллекцию) формы. Прямую объектную ссылку не стоит прописывать, т.к. она будет мешать разгрузке (закрытию/уничтожению) формы.
Ну а вообще начинать стоит с формулировки задачи, а не способа её решения Т.е. для чего пытаешься перебирать все гриды. Может быть и не нужен там перебор вовсе. P.S. где-то тут в решениях должен быть SetAllX - расширенная функция рекурсивного обхода объектов - можно посмотреть код или просто использовать как готовый вариант - онять же зависит от задачи, для чего ходить по объектам. ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 10.09.19 23:05 |
Re: Поиск объектов в форме | |
---|---|
Vedmak Сообщений: 5949 Откуда: CiTY Дата регистрации: 30.10.2003 |
Стараюсь избегать "рассказывания" ) дочернему объекту его роли с среде "родителя". Лишние синтетические связи поверх родных. Не стоит создавать почву для конфликта и оный не возникнет. ------------------ Говорить стоит лишь для тех, кто слушает. Исправлено 1 раз(а). Последнее : Vedmak, 10.09.19 23:23 |
Re: Поиск объектов в форме | |
---|---|
Rifat Автор Сообщений: 32 Дата регистрации: 06.02.2012 |
Спасибо за советы, наверное воспользуюсь идеей Игоря Королева, так как задача касается именно гридов - запомнить ширины колонок при закрытии формы.
|
Re: Поиск объектов в форме | |
---|---|
pasha_usue Сообщений: 3647 Откуда: Е-бург Дата регистрации: 06.10.2006 |
О чём Игорь сразу и сказал: "Надо начать с формулировки задачи". Гораздо проще сделать свой класс грида, от которого наследовать гриды в формах. А в классе в методах Init/Destroy восстанавливать/запоминать ширины колонок. |
Re: Поиск объектов в форме | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
Полагаю грид должен сам себя сохранять и восстанавливать.
Вот сохранение грида в реестре. RwRst - функция записи, чтения из реестра
Сохранение грида
Восстановление
|
Re: Поиск объектов в форме | |
---|---|
Rifat Автор Сообщений: 32 Дата регистрации: 06.02.2012 |
В принципе, согласен, но так уж исторически сложилось в проекте, что все пользовательские настройки хранятся в спец. таблицах в отдельной папке профиля пользователя. Ширины колонок в гридах при ресайзе пропорционально подстраиваются по ширине грида, и большинство это устраивает. Но бывает, что некоторым пользователям удобнее самим настроить ширины колонок. Привязываться к классу грида, или формы подумаю еще). Спасибо за код работы с реестром. |
Re: Поиск объектов в форме | |
---|---|
Аспид Сообщений: 3475 Откуда: Москва Дата регистрации: 01.04.2005 |
так нет проблем, всю эту хрень переделать под хранение в своих таблицах.
У меня сначала в таблицах было, потом в ini, потом в реестре. Теперь и реестр не в тренде))) Но уж точно трогать не буду)) |
Re: Поиск объектов в форме | |
---|---|
of63 Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
В ProgramData можно хранить общее для всех юзеров
В C:\users\user\AppData\Roaming - личное для юзера, кем вошел в ОС
|
Re: Поиск объектов в форме | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
У большинства разработчиков на фоксе есть свой вариант решения этой задачи (при том место хранения настроек - это уже детали реализации). И, опять же, у большинства он НЕ требует обхода внутренностей формы, а основан на работе методов собственно гридов - для чего они и субклассируются Получать полный иерархический путь для грида можно используя SYS(1272,...) - и на его основании (дополнительно используя имя формы) точно идентифицировать каждый из гридов в приложении - как бы глубоко он не был запрятан на форме, и как бы не ленив был разработчик при именовании этих гридов - да хоть бы он их все называл Grid1 - пока они в разных контейнерах находятся, их можно без проблем различать. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |