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);
}