FORM_ZONE.OnChangeIndex


Синтаксис

PROPERTY [RW, NE] OnChangeIndex: SCAL[2];

Описание

Флаг включения программного события "смена индекса сортировки записей в зоне". По умолчанию сброшен. Соответствует флагу "ChangeIndex" в свойствах зоны в WED.

Непрерываемое программное событие перерисовки окна уровня зоны OnChangeIndex вызывается при позиционировании в мастере зоны во время работы видеоконформа. Предназначено для настройки свойств собственного окна и связанных с ним окон на основе нового индекса сортировки зоны.

Данное событие возникает в любой зоне любого открытого окна если:

  1. происходит смена индекса сортировки записей в зоне. Это может быть
    1. в результате явных действий пользователя: выбора нового индекса сортировки в активной зоне верхнего окна с помощью опций PrvKey (традиционно на клавише Left) и NxtKey (традиционно на клавише Right), либо мышью.
    2. в результате выполнения в ASL-программе процедуры SE_WZD_CURSOR, которая подменила текущий индекс в курсоре зоны
    3. в результате модификации в ASL-программе свойств FORM_FIELD.Expression, FORM_ZONE.BanHierarchicView и т.п., что в некоторых случаях приводит к смене индекса сортировки в зоне
  2. в зоне не был определен текущий индекс сортировки и теперь он определяется. Это может быть
    1. в активной зоне при первом открытии окна. При последующих открытиях окна ключ не меняется и событие не возникает
    2. каждый раз, когда определяется селект в глубоко подчиненной зоне окна. Предположим зона Z1 подчинена окну, зона Z2 подчинена зоне Z1, зона Z3 подчинена зоне Z2. Выполняется опция View(Window 1). Если в зоне 1 имеется текущая запись, то в зоне 2 определяется селект, а в зоне 3 селект не определяется. В результате событие "смена индекса" будет в зонах 1 и 2, но не в зоне 3. Далее выполняем View(. 2), т.е. переходим в зону 2. Если в зоне имеется текущая запись, то в этот момент селект определяется в зоне 3 и в ней будет событие "смена индекса". Затем выполняем View(. 1), т.е. возвращаемся в зону 1 - в зоне 3 селект пропал, событие в этом случае не возникает. Снова выполняем View(. 2), т.е. переходим в зону 2. В этот момент в зоне 3 снова определяется  селект и в ней снова будет событие "смена индекса".

Событие "смена индекса сортировки" не возникает если:

  1. изменяется ручной отбор записей (ручной селект) в пределах текущего индекса (традиционно на кнопках AltI-Tab)
  2. при перемещениям по записям зоны
  3. в начале-окончании видео-процессов в зоне

Особенности работы такой программы:

  1. RTI.StartMode=8
  2. Вызывается после смены индекса в зоне.
  3. Смена индекса сортировки может быть и в условиях отсутствия записей в зоне, поэтому ACCESS может вернуть 0.
  4. Если в программе обработки данного события изменить индекс сортировки или позицию в курсоре зоны, для которой это событие вызвано, то повторно события "смена индекса" и "смена позиции" для этой зоны не вызываются.

Программное событие появилась в версии 14.99.3, данное свойство появилось в версии 14.101.15.