FORM_WINDOWS.Load


Синтаксис

PROCEDURE Load(Name: STRING[];
               [ AssignedName: STRING[] ];
               [ ParentZone: FORM_ZONE ];
               [ Env: ENV ]
              ): FORM_WINDOW;

Описание

Загружает окно, имя которого указано в параметрах, и помещает его в коллекцию загруженных окон.

Метод выполняется в два этапа. Первый этап - загрузка окна-заготовки, выполняется только если ранее окно не было загружено; этап полностью совпадает с методом FORM_WINDOWS.LoadBlank (см.). Второй этап - перевод окна в состояние подготовленного, выполняется только если окно находится в состоянии заготовки и включает в себя следующие действия:

  1. сбрасывается информация о позиции в курсорах окна и всех зон (эти позиции могли остаться, когда подготовленное окно перевели в состояние заготовка);
  2. выполняется программное событие OnInitializeWindow;
  3. выполняется анализ фильтров и представлений зоны, описанных в WDO: проверяется синтаксис описания условий, наличие указанных полей и т.п., для представлений выбирается походящий индекс сортировки;
  4. выполняется программное событие OnInitializeZoneFilters;
  5. выполняется определение подчиненности зон;
  6. окно объявляется полностью загруженным, т.е. теряет статус "заготовка" (см. FORM_WINDOW.Blank).

Параметр Env (появился в V14.199.050) передается в неизменном виде в события, сопровождающие загрузку окна. Для его хранения на время выполнения этих событий создается фиктивный процесс типа Kind_Dummy.

Начиная с версии 14.194.050 определена следующая реакция метода на необработанное исключение в обработчиках событий OnInitializeWindow и OnInitializeZoneFilters.

  1. Если обработчик завершился неперехватываемым исключением 300 ('X' в отладчике), метод также выбросит исключение 300.
  2. Если обработчик завершился необработанным исключением 301 (прерывание по Esc), метод выбросит исключение 301, которое в свою очередь может быть обработано.
  3. Если обработчик завершился другим исключением, метод выбросит исключение 883 с добавлением текста первичного исключения. Исключение будет сопровождаться сообщением, только если сообщение в обработчике не было показано.