|
Как определить что родитель объекта принадлежит определенному классу?
|
|||
---|---|---|---|
#18+
Привет! У меня есть класс PageFrame, который на своих страницах может содержать что угодно, и обычные PageFrame тоже. Суть моего PageFrame - пошаговый ввод инфы (табов не видно). У него есть свойство, в котором хранится схема прохода по страницам. При этом не все страницы могут проходится, например: страниц/шагов 10, а схема указана 1,3,10. Во время инициализации формы с таким PageFrame естественно инициируются абсолютно все объекты формы, а там много всяких выборок, что задерживает. Суть в том, что поскольку не все страницы будут посещены во время работы формы, то и не все объекты необходимо инициировать на старте, что означает уменьшение количества выборок. А уже непосредственно перед посещением каждой страницы как раз и инициировать все ее объекты. Вопрос - как это сделать? мне видятся такие способы: 1) в ините каждого объекта проверять не принадлежит он где-то сверху такому PageFrame (родителю), если принадлежит, то на ините возвращаем Return .T. Но глубина вложенности "наверх" - неизвестна. Как проверять - хз... Как-то надо узнать сколько родителей по цепи, что ли... Или через pemstatus или ехать проверяя кто родитель наверх до screen-а... 2) Инициализировать объекты на страницах PageFrame по указанной в ней схеме, но хз как отменить предварительную стандартную инициализацию (т.к. схема мне не известна, знаю только что форма идет последней) и как потом запустить инит для каждого объекта страницы? спасибо! вфп9 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 14:10 |
|
Как определить что родитель объекта принадлежит определенному классу?
|
|||
---|---|---|---|
#18+
Можно сохранить страницы в библиотеку классов, при инициализации формы грузить пустой PageFrame, а после определения схемы - загрузить из библиотеки нужные страницы. Можно даже подгружать по ходу работы оператора - когда нужен будет переход на эту страницу. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 14:59 |
|
Как определить что родитель объекта принадлежит определенному классу?
|
|||
---|---|---|---|
#18+
Спасибо! Честно говоря я не понял... Допустим я на форме создам пф без страниц вообще. Что дальше? А... Вы имеете в виду создать сами страницы как отдельные классы... и потом на лету необходимую страницу добавлять из класса, т.е. каждый раз другую? тогда понятно. Правда это сложноватый подход... Пока что обошелся просто добавлением в иниты объектов прием параметра, типа Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 18:07 |
|
Как определить что родитель объекта принадлежит определенному классу?
|
|||
---|---|---|---|
#18+
Попробую рассказать подробнее. Недавно была похожая проблема - переделывал чужую программу, где было много PageFrame c идентичными по форме страницами и слегка отличающимся кодом. Чтобы не править 15 форм, сделал библиотеку классов - простым копированием. Целиком сохранить в библиотеке объект Page не удается, поэтому выделял всю "начинку" формы, нажимал Save as class - и готов объект Container. Осталось перетащить нужный код в Init созданного класса и слегка подправить коды объектов. Чтобы не писать лишний код в Init классов, можно написать его в свойствах формы и обращаться к нему через parent.parent... Далее в init формы создается в PageFrame новый объект Page, а в нем через AddObject - нужный класс - контейнер - и пейдж готов. И так для всех Page - по 2 - 3 команды. Таким путем из 15 форм удалось сделать одну и избавиться от массы лишнего кода. Можно, в принципе, сделать и объект Page, но тут больше нужно дорабатывать класс вручную. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 21:02 |
|
Как определить что родитель объекта принадлежит определенному классу?
|
|||
---|---|---|---|
#18+
Если схемы прохода страниц не персекаются, то проще делать разные формы для каждой схемы прохода. Например, если есть схемы 1-3-10 и 2-4-5, то и сделай две формы, на первой из которых будут только страницы 1-3-10, а на второй 2-4-5. Не стоит пытаться писать универсальный класс на все случаи жизни с кучей IF. Проще сделать несколько разных объектов, каждый под свою задачу. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.12.2009, 21:50 |
|
|
start [/forum/topic.php?fid=41&msg=36346196&tid=1585808]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 151ms |
0 / 0 |