Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как определить что родитель объекта принадлежит определенному классу? / 5 сообщений из 5, страница 1 из 1
03.12.2009, 14:10
    #36346014
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить что родитель объекта принадлежит определенному классу?
Привет!
У меня есть класс PageFrame, который на своих страницах может содержать что угодно, и обычные PageFrame тоже. Суть моего PageFrame - пошаговый ввод инфы (табов не видно). У него есть свойство, в котором хранится схема прохода по страницам. При этом не все страницы могут проходится, например: страниц/шагов 10, а схема указана 1,3,10.
Во время инициализации формы с таким PageFrame естественно инициируются абсолютно все объекты формы, а там много всяких выборок, что задерживает. Суть в том, что поскольку не все страницы будут посещены во время работы формы, то и не все объекты необходимо инициировать на старте, что означает уменьшение количества выборок. А уже непосредственно перед посещением каждой страницы как раз и инициировать все ее объекты.
Вопрос - как это сделать? мне видятся такие способы:
1) в ините каждого объекта проверять не принадлежит он где-то сверху такому PageFrame (родителю), если принадлежит, то на ините возвращаем Return .T. Но глубина вложенности "наверх" - неизвестна. Как проверять - хз... Как-то надо узнать сколько родителей по цепи, что ли... Или через pemstatus или ехать проверяя кто родитель наверх до screen-а...
2) Инициализировать объекты на страницах PageFrame по указанной в ней схеме, но хз как отменить предварительную стандартную инициализацию (т.к. схема мне не известна, знаю только что форма идет последней) и как потом запустить инит для каждого объекта страницы?

спасибо!

вфп9
...
Рейтинг: 0 / 0
03.12.2009, 14:59
    #36346196
Sea_Cat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить что родитель объекта принадлежит определенному классу?
Можно сохранить страницы в библиотеку классов, при инициализации формы грузить пустой PageFrame, а после определения схемы - загрузить из библиотеки нужные страницы. Можно даже подгружать по ходу работы оператора - когда нужен будет переход на эту страницу.
...
Рейтинг: 0 / 0
03.12.2009, 18:07
    #36346797
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить что родитель объекта принадлежит определенному классу?
Спасибо!
Честно говоря я не понял...
Допустим я на форме создам пф без страниц вообще. Что дальше?
А... Вы имеете в виду создать сами страницы как отдельные классы... и потом на лету необходимую страницу добавлять из класса, т.е. каждый раз другую? тогда понятно. Правда это сложноватый подход... Пока что обошелся просто добавлением в иниты объектов прием параметра, типа
Код: plaintext
1.
2.
3.
LPARAMETERS tlInit
if !m.tlInit
return .T.
endif
А когда страница активируется, то прописал инит с передачей (Т) для этих объектов. Никакой автоматизации программирования, но уж как есть. Главно дело что в класс это не добавишь... Доупустим я бы добавил в класс такой код, но так как у каждого объекта в каждом случае на ините своя выборка, ее надо будет в инит вписать. А это значит что надо везде в первых строчках написать DODEFAULT(m.tlInit), который будет следовать за LPARAMETERS tlInit, что почти то же самое что и скопипастить куда надо 3 строчки...
...
Рейтинг: 0 / 0
03.12.2009, 21:02
    #36347110
Sea_Cat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить что родитель объекта принадлежит определенному классу?
Попробую рассказать подробнее.
Недавно была похожая проблема - переделывал чужую программу, где было много PageFrame c идентичными по форме страницами и слегка отличающимся кодом. Чтобы не править 15 форм, сделал библиотеку классов - простым копированием. Целиком сохранить в библиотеке объект Page не удается, поэтому выделял всю "начинку" формы, нажимал Save as class - и готов объект Container.
Осталось перетащить нужный код в Init созданного класса и слегка подправить коды объектов.
Чтобы не писать лишний код в Init классов, можно написать его в свойствах формы и обращаться к нему через parent.parent...
Далее в init формы создается в PageFrame новый объект Page, а в нем через AddObject - нужный класс - контейнер - и пейдж готов. И так для всех Page - по 2 - 3 команды. Таким путем из 15 форм удалось сделать одну и избавиться от массы лишнего кода.
Можно, в принципе, сделать и объект Page, но тут больше нужно дорабатывать класс вручную.
...
Рейтинг: 0 / 0
03.12.2009, 21:50
    #36347158
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как определить что родитель объекта принадлежит определенному классу?
Если схемы прохода страниц не персекаются, то проще делать разные формы для каждой схемы прохода.

Например, если есть схемы 1-3-10 и 2-4-5, то и сделай две формы, на первой из которых будут только страницы 1-3-10, а на второй 2-4-5.

Не стоит пытаться писать универсальный класс на все случаи жизни с кучей IF. Проще сделать несколько разных объектов, каждый под свою задачу.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как определить что родитель объекта принадлежит определенному классу? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]