Синтаксис
PROPERTY [RW, NE] OnSetSubwindow : SCAL[2] ; |
Описание
Разрешение вызова программного события "назначение
имени подчиненного окна" для данной зоны. Значение по умолчанию определяется в WED установкой флажков в разделе "Subwindow-Manual choose" в
описании свойств зоны. Данное свойство объединяет все эти четыре флажка:
- по чтению возвращает 1, если стоит хотя бы один из четырех флажков в WED
- по записи действует на все 4 флажка одновременно
Таблица
соответствия флажков в WED и выполняющегося в панели подчиненного окна процесса, RTI.StartMode в каждом из этих случаев принимает специфическое значение
Признак в разделе Subwindow-Manual choose
свойств зоны |
Опция процесса подчиненного окна |
Значение RTI.StartMode на
старте программы |
Edit |
Edit |
10 |
Insert |
Ins |
11 |
Delete |
Del |
12 |
ShowWin |
ShowWin |
13 |
Непрерываемое,
настраивающее
режим видеопроцесса,
имеющее на старте позицию RTI.CurZone
(кроме интерактивной вставки) программное событие
уровня зоны, OnSetSubwindow вызывается
в порождающей зоне при
работе
процессов Edit, Ins, Del, ShowWin в панели
подчиненного окна:
- на старте процессов
- если в порождающей зоне установлен флаг FORM_ZONE.HasVariousSubwindows
- при смене текущей позиции в порождающей зоне и, как следствие, в панели
подчиненного окна (начиная с V14.152.040)
- если текущая позиция в порождающей зоне не изменилась, но изменились
значения полей текущей записи, и эта запись не редактируется интерактивно в
окнах собственного подключения (начиная с V14.190.060)
Особенности такой программы:
- RTI.CurZone,
RTI.CurWindow -
соответственно порождающая зона и окно. RTI.CurProcess
- процесс в панели подчиненного окна (если имя подчиненного окна будет
пустым, то процесс будет работать прямо в порождающей зоне). RTI.Env
- переменные окружения нового процесса.
- Если событие вызвано на старте процесса, то к этому моменту новый процесс уже
выполняется, но он пока не связан ни с какой зоной окна. Поэтому
RTI.CurProcess.Zone
здесь имеет пустое значение.
- Событие выполняется на транзакции (стартующего) процесса подчиненного
окна. Если это ShowWin, и в вышестоящих зонах не ведется редактирование, то
событие выполняется на
видеосистемной транзакции.
- Главная задача программы - для исходной зоны RTI.CurZone
назначить имя подчиненного окна с помощью свойства
FORM_ZONE.SubwindowOriginalName.
Если стартует новый процесс, он запустится в панели этого окна. Если данное
событие вызвано из-за смены позиции в панели подчиненного окна (в
порождающей зоне выставлен флаг FORM_ZONE.HasVariousSubwindows), и значение
FORM_ZONE.SubwindowOriginalName порождающей зоны перестало совпадать с
оригинальным именем подчиненного окна, то в подчиненном окне выставляется
требование подмены (аналог метода FORM_WINDOW.Interchange)
и процесс рестартует в панели окна
FORM_ZONE.SubwindowOriginalName.
- После завершения данной программы стартующий (рестартующий, если окно
подменилось) процесс пытается связаться
с панелью назначенного подчиненного окна
- Если в целевой зоне нет процессов, то новый процесс связывается с
этой зоной и продолжает выполнение
- Если в целевой зоне уже есть процесс редактирования, то выдается
сообщение с предложением переключиться в это окно. В любом случае новый
процесс завершается, что сопровождается
сбросом очереди команд.
- Если новый процесс - это ShowWin, а в целевой зоне процесс ShowWin
уже выполняется, то прежний ShowWin молча подменяется на новый (точнее у
прежнего подменяются переменные окружения)
До
версии 14.144.010 данное
программное событие выполнялось до старта нового процесса на транзакции
исходной зоны.
Свойство добавлено в V14.152.040.