PROCEDURE Interchange(OriginalName: STRING[];
[
AssignedName: STRING[] ]):
FORM_WINDOW;
Объявляет, что данное окно должно быть заменено на окно с оригинальным именем OriginalName и назначаемым AssignedName, а если этот параметр не указан, назначаемое имя будет совпадать с оригинальным. Пустое значение в параметре OriginalName означает, что данное окно нужно закрыть, а новое не открывать.
Предполагается, что метод будет вызываться в программном событии OnReposition. Во время выполнения данного метода в окне только делается пометка, что его необходимо подменить. После окончания работы видео-конформа, когда все события "смена текущей позиции" отработают, начинается собственно подмена окон, которая для каждого окна выполняется в несколько этапов:
Подменить можно не любое окно, а только если
Если в эти условия не выполняются в момент работы данного метода, то выбрасывается исключение 951. Если эти условия перестали выполняться к моменту собственно подмены окна, то подмена молча не выполняется, требование подмены снимается. Когда процесс переключения окна уже начался, то ошибка на одном из 4-х его этапов игнорируется, и последующие этапы все равно выполнятся.
До тех пор, пока реальной подмены окна не произошло, повторный вызов Interchange отменяет назначение предыдущего вызова Interchange.
Если назначаемое имя исходного окна, совпадает с назначаемым именем нового окна, то подмена окна выполняться не будет. В противном случае возможен бесконечный цикл: событие OnReposition - в нем Interchange для собственного окна - перезагрузка окна - снова OnReposition и т.д.
Если во время выполнения Interchang окно с назначаемым именем AssignedName уже загружено, но его оригинальное имя не совпадает с OriginalName, причем отличается не только регистром, то выбрасывается исключение 966.
Назначаемое имя от оригинального может отличаться только наличием суффикса, иначе выбрасывается исключение 978 с текстом "Оригинальное имя %s не совпадает с началом назначаемого имени %s".
Если Interchange подменяет верхнее окно, причем мастер окна и панельной зоны исходного окна совпадают с соответствующими мастерами нового окна, позиции этих мастеров при открытии нового окна скопируются из исходного в новое. Иначе позиция в новом окне определится по обычным правилам.
Метод может выполняться только для открытых окон, иначе исключение 942.
Аналог метода Interchange с единственным параметром вызывается для подчиненного окна при смене позиции в его панели, если в порождающей зоне выставлен флаг FORM_ZONE.HasVariousSubwindows.