cmTreeNeedOwner: рекурсивный обход дерева |
Идентификатор события - cmTreeNeedOwner.
Событие cmTreeNeedOwner используется совместно с функциями TreeJumpToRecord и TreeJumpToRecordEx для корректного позиционирования на произвольную запись в дереве.
Событие посылатся изнутри этих функций для организации рекурсивного обхода дерева. Предполагается, что вершина дерева имеет NRec = 0. Если нет, то в обработке события cmTreeNeedOwner надо делать проверку и для корня дерева вызывать TreeJumpToRecord с нулевым NRec (см. Пример 2).
Пример 1. Обход дерева с нулевом корнем
cmTreeNeedOwner: { TreeJumpToRecord(trTemp, mTree2.cOwner); // все родители до корня (NRec корня = 0) } cmInit : { TreeJumpToRecord(trTemp, pRec); // первый вызов с нужным NRec }
Пример 2. Обход дерева с ненулевом корнем
В данном примере предполагается, что mTree2.cOwner указывает на предка в дереве, а trTemp - имя иерархического редактора.
cmTreeNeedOwner: { if (mTree2.cOwner = 1) TreeJumpToRecord(trTemp, 0); else TreeJumpToRecord(trTemp, mTree2.cOwner); }