Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Перебор объектов контейнера через FOR EACH / 7 сообщений из 7, страница 1 из 1
19.10.2010, 11:46
    #36907068
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор объектов контейнера через FOR EACH
Привет!
Такой вопрос: при переборе объектов контейнера (нпр: Page) возможна ли ситуация, когда объект (child), принадлежащий некоему контейнеру в этом контейнере (parent, нпр: гриду на этой Page) будет поднят перебором ранее/позже (мб независимо вообще) самого грида (т.е. child прежде его parent-а)?
Например, следующему коду в loContainer передается страница PageFrame содержащая грид:
Код: plaintext
1.
2.
FOR EACH loObj in loContainer.Objects
...
ENDFOR
в такую обработку (коду выше) я специально не засылаю контейнеры BaseClass которых = GRID или OPTIONGROUP:
Код: plaintext
1.
2.
3.
4.
IF PEMSTATUS(m.loCtrl,"Objects",  5 );
AND !INLIST(UPPER(m.loCtrl.BaseClass),'GRID','OPTIONGROUP')
вызов кода перебора объектов контейнера
...
ENDIF
Таким образом я предполагаю что обработка объектов будет идти поконтейнерно. Но дело в том, что у меня в лог упала ошибка при обработке объекта грида (контрола ячеек столбца), хотя такого, как я понимаю, вообще не должно было произойти. Однако если код получает ссылку на контрол в гриде ранее или позже самого грида или вообще независимо от грида (т.е. если таким способом обрабатываются вообще все объекты контейнера, даже вложенные в другие контейнеры), то тогда егор возможен, а мне надобно что-то делать с этим.

спасибо.

vfp9
...
Рейтинг: 0 / 0
19.10.2010, 12:23
    #36907194
Перебор объектов контейнера через FOR EACH
CTAC-KO,
хотя я так и не понял кто на ком стоял, на таки пару мыслей выскажу.
1. FOR EACH не гарантирует какой-либо порядок обработки.
2. Ковыряние одного обхъекта во внутренностях другого - моветон. Создайте в каждом паренте метод перебора чилдов и им пользуйтесь и порядок получится сам собой.
...
Рейтинг: 0 / 0
19.10.2010, 16:17
    #36907996
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор объектов контейнера через FOR EACH
Да я, собственно, не о каком-либо порядке перебора, а о том, будет ли такой перебор ковыряться в контейнерах? т.к. полагаю что не долж0н
...
Рейтинг: 0 / 0
19.10.2010, 16:41
    #36908077
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор объектов контейнера через FOR EACH
CTAC-KOДа я, собственно, не о каком-либо порядке перебора, а о том, будет ли такой перебор ковыряться в контейнерах? т.к. полагаю что не долж0н
Не будет, если хочешь чтоб обрабатывались элементы вложенных контейнеров - запускай код рекурсивно.
...
Рейтинг: 0 / 0
19.10.2010, 19:11
    #36908503
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор объектов контейнера через FOR EACH
дело в том что именно так и делаю, причем исключаю рекурсию в гриды и опшнгруппы (см выше), но уже несколько раз код умудрился "зайти" в грид, как в контейнер. Потому-то я и задал вопрос.
...
Рейтинг: 0 / 0
19.10.2010, 21:04
    #36908617
piva
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор объектов контейнера через FOR EACH
CTAC-KOно уже несколько раз код умудрился "зайти" в грид, как в контейнер.
Код объекта и окончательный код обхода в "студию" иначе не верю
...
Рейтинг: 0 / 0
01.11.2010, 15:00
    #36931321
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор объектов контейнера через FOR EACH
2Piva
У меня там код разбит на 2 части - одна для обхода страниц PageFrame, а другая для обхода объектов других контейнеров. Так в одной части было
Код: plaintext
1.
2.
FOR EACH loObj in loContainer.Objects
...
ENDFOR
а в другой
Код: plaintext
1.
2.
FOR EACH loObj in loContainer.Controls
...
ENDFOR
я исправил второе на Objects и бага больше не являлась пока, поэтому думаю что проблема была в этом...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Перебор объектов контейнера через FOR EACH / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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