Difference between revisions of "LoadToolForm"

From SunFlurry wiki
Jump to: navigation, search
 
m (1 revision imported)
 
(4 intermediate revisions by 2 users not shown)
Line 30: Line 30:
 
== Синтаксис ==
 
== Синтаксис ==
 
<code>
 
<code>
'''LoadToolForm'''(''<Способ вызова (INT)>'',''<Режим загрузки формы (INT)>'',''<Путь или имя базы данных (STRING)>''{{OptionalByRef|,<Параметр>,<Опция>}}{{Optional|,<Имя формы (STRING)>{{Default|{{Eq}}"Form"}}}}{{OptionalByRef|,<Серийный номер открытой формы (INT)>}}):''<Результат, возвращенный при инициализации формы>''
+
'''LoadToolForm'''(''<Способ вызова (INT)>'',''<Режим загрузки формы (INT)>'',''<Путь или имя базы данных (STRING)>''{{OptionalByRef|,<Параметр>,<Опция>}}{{Optional|,<Имя формы (STRING)>{{Default|{{Eq}}"Form"}}}}{{OptionalByRef|,<Объект открытой формы (FORM)>}}):''<Результат, возвращенный при инициализации формы>''
 
</code>
 
</code>
 
==== Аргументы ====
 
==== Аргументы ====
Line 41: Line 41:
 
** 0 -- форма загружается в режиме инструментария в корневой поток (резидентно). В этом режиме она будет видна и доступна из формы любого созданного потока. Форма может быть закрыта только когда пользователь пожелает ее закрыть.
 
** 0 -- форма загружается в режиме инструментария в корневой поток (резидентно). В этом режиме она будет видна и доступна из формы любого созданного потока. Форма может быть закрыта только когда пользователь пожелает ее закрыть.
 
** 1 -- форма загружается в режиме инструментария в текущий поток (локально). В этом режиме она будет видна и доступна только для текущей формы и будет закрыта в момент, когда текущая форма будет закрыта.
 
** 1 -- форма загружается в режиме инструментария в текущий поток (локально). В этом режиме она будет видна и доступна только для текущей формы и будет закрыта в момент, когда текущая форма будет закрыта.
** 2 -- форма загружается в режиме всплывающего окошка (подсказки). Форма автоматически закрывается системой в момент, когда она теряет фокус. Такой режим удобен для показа форм быстрого редактирования полей и других элементов экранных форм.
+
** 2 -- форма загружается в режиме всплывающего окошка (подсказки). Форма автоматически закрывается системой в момент, когда она теряет фокус. Функция возвращает управление после закрытия формы. Такой режим удобен для показа форм быстрого редактирования полей и других элементов экранных форм.
* <code>''<Путь или имя базы данных (STRING)>''</code> - Строковое представление данного аргумента может представлять собой путь к объекту базы данных, относительный путь к папке проекта на сервере, абсолютный путь к папке проекта на локальном компьютере. См. описание этой функции для более полной информации.
+
** 3 -- форма загружается в режиме всплывающего окошка (подсказки). Форма автоматически закрывается системой в момент, когда она теряет фокус. Функция возвращает управление сразу после создания формы до ее закрытия. Такой режим удобен для показа изменяемых форм, когда вызывающий код продолжает изменения, когда форма уже выведена на экран.
 +
* <code>''<Путь или имя базы данных (STRING)>''</code> - Строковое представление данного аргумента может представлять собой путь к объекту базы данных, относительный путь к папке проекта на сервере, абсолютный путь к папке проекта на локальном компьютере. См. описание этой функции для более полной информации. Также можно указывать путь к внешнему объекту и путь внутри него (см. [[Имена файлов]]).
 
* <code>''<Параметр>,<Опция>''</code> - {{ByRef}} {{Optional}} Аргументы передаются в вызываемую форму без изменения, и могут использоваться по усмотрению разработчика. Аргументы будут доступны при вызове визуальных событий инициализации элементов форм (к примеру '''OnInitLine''') или в визуальном событии '''OnOpen''' под именами '''Param''' и '''Option'''.  
 
* <code>''<Параметр>,<Опция>''</code> - {{ByRef}} {{Optional}} Аргументы передаются в вызываемую форму без изменения, и могут использоваться по усмотрению разработчика. Аргументы будут доступны при вызове визуальных событий инициализации элементов форм (к примеру '''OnInitLine''') или в визуальном событии '''OnOpen''' под именами '''Param''' и '''Option'''.  
 
* <code>''<Имя формы (STRING)>''</code> - {{Optional}} Имя загружаемой формы, если этот параметр не указан, будет использовано имя '''Form'''.
 
* <code>''<Имя формы (STRING)>''</code> - {{Optional}} Имя загружаемой формы, если этот параметр не указан, будет использовано имя '''Form'''.
* <code>''<Серийный номер открытой формы (INT)>''</code> - {{ByRef}} Переменная, которая получит серийный номер созданной форме. Серийные номера используются в функциях работы с сообщениями (к примеру, [[SendMessageToForm]]).
+
* <code>''<Объект открытой формы (FORM)>''</code> - {{ByRef}} Переменная, которая получит объект созданной формы. Если открытие формы было прервано по какой-то причине, переменная не будет изменена.
  
 
==== Возвращаемое значение ====
 
==== Возвращаемое значение ====

Latest revision as of 07:54, 22 January 2025

  LoadToolForm (Загрузка модулей)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку или число, неверный путь, отсутствует заданная форма
Визуальность:Да

Функция работает только для визуальных клиентов и позволяет загружать произвольную форму в режиме инструментария или в режиме всплывающей подсказки. Формы в таком режиме не имеют модулей и работают в контексте текущего модуля, либо в контексте корневого модуля, в зависимости от параметров загрузки. Функция может возвратить серийный номер открытой формы, чтобы программа могла осуществлять переговоры с ней с помощью отсылки сообщений. Форма всегда загружается в свободном режиме (не модально), ей передаются два аргумента, которые возвратятся измененными в вызывавший модуль, если форма изменила их внутри визуального события OnOpen. Функция возвратится после полной инициализации формы, если загрузка удачна или после появления исключения, если она не удачна. Для клиентов, работающий с сервером базы данных, путь должен представлять собой серверный файловый путь (пример: Modules\FreeForms\Касса\Обработка доверенностей) или наименование объекта базы данных в виде <Тип объекта>.<Вид объекта> (пример Ref.Номенклатура), система преобразовывает его в соответствующий путь. Для клиентов работающих локально (без подключения к серверу базы данных), функция принимает абсолютный файловый путь.

Режим загрузки формы должен быть настроен в Студии, без соответствующего разрешения на загрузку, форма не будет загружена и будет создано исключение. Формы такого рода могут использоваться для создания резидентных областей экрана, где пользователь может осуществлять действия по редактированию данных или получению информации. К примеру, такая форма может представлять собой калькулятор или календарь, либо, к примеру, для рабочего места кассира можно расположить управление кассовым аппаратом в корневом потоке клиента, чтобы оно было доступно в любой момент работы пользователя. Возможность загрузки форме в режиме всплывающего окна, также делает возможным использование этой функции для загрузки окон типа "подсказка" со сложной информацией внутри или загрузки окон быстрого выбора информации (к примеру, календарь при выборе даты в поле редактирования). Формы, загружаемые в режиме инструментария могут "крепиться" к краям экрана для удобства работы пользователей. Также смотрите статью LoadModule

Загрузка формы в режиме инструментария проходит следующие этапы:

  • Если путь и наименование формы указаны корректно, произойдет загрузка формы и проверка доступности режима загрузки.
  • Создается новый дескриптор окна, в стек переменных помещаются переменные Param, Option и ModalResult, заполненные значениями аргументов.
  • Будет произведена попытка создания и начального заполнения формы с указанных именем. Если форма с таким именем в пути вызова функции отсутствует, будет вызвано исключение, загрузка будет отменена.
  • Происходит этап показа и выполнения формы:
    • Выводится на экран загруженная форма.
    • Происходит заполнение табличных элементов формы, полей, списков и прочего из базы данных. Вызываются визуальные события, типа OnInitLine и подобные.
    • Происходит вызов визуального события OnOpen, если оно задано на форме, шаблонах формы, закладках элементов формы. Данное событие, а также все события, вызываемые при начальном заполнении элементов формы, могут изменить переменные Param, Option и ModalResult, которые будут переданы назад в вызывавший модуль.
    • Происходит позиционирование на требуемом элементе таблицы выбора, если таковой задан.
    • Происходит заполнение из базы данных элементов формы, которые не были обновлены из-за их изменения внутри OnOpen и ранее из-за изменения их параметров и фильтров. Таким образом происходит оптимизация загрузки, чтобы элементы не обновлялись при загрузке более одного раза, замедляя загрузку и увеличивая нагрузку на базу данных. Кроме того, все созданные ранее асинхронные события и вызовы функций выполняются последовательно на этом этапе (система задерживает их выполнение до полной инициализации формы, так как они могут использовать загруженные формой данные).
    • Если внутри событий была вызвана функция закрытия формы Form.Close, форма закрывается. Иначе, управление отдается пользователю и форма ожидает от него команд, внешних прерываний, внешних сообщений или событий типа OnTimer. В этот момент устанавливается внутренний флаг окончания загрузки формы и функция Form.IsFullyInitialized будет возвращать 1.
    • Функция LoadToolForm возвращает управление модулю, который продолжает работу.

Синтаксис

LoadToolForm(<Способ вызова (INT)>,<Режим загрузки формы (INT)>,<Путь или имя базы данных (STRING)>,<Параметр>,<Опция>,<Имя формы (STRING)>="Form",<Объект открытой формы (FORM)>):<Результат, возвращенный при инициализации формы>

Аргументы

режим загрузки разрешается в студии.

  • <Способ вызова (INT)> - Способ вызова загружаемой формы. Возможны следующие значения:
    • 0 -- форма будет загружена, даже если такая же форма присутствует в контексте загрузки.
    • 1 -- форма будет загружена, только если она уже не существовала до этого.
  • <Режим загрузки формы (INT)> - Режим загрузки формы. Возможны следующие значения:
    • 0 -- форма загружается в режиме инструментария в корневой поток (резидентно). В этом режиме она будет видна и доступна из формы любого созданного потока. Форма может быть закрыта только когда пользователь пожелает ее закрыть.
    • 1 -- форма загружается в режиме инструментария в текущий поток (локально). В этом режиме она будет видна и доступна только для текущей формы и будет закрыта в момент, когда текущая форма будет закрыта.
    • 2 -- форма загружается в режиме всплывающего окошка (подсказки). Форма автоматически закрывается системой в момент, когда она теряет фокус. Функция возвращает управление после закрытия формы. Такой режим удобен для показа форм быстрого редактирования полей и других элементов экранных форм.
    • 3 -- форма загружается в режиме всплывающего окошка (подсказки). Форма автоматически закрывается системой в момент, когда она теряет фокус. Функция возвращает управление сразу после создания формы до ее закрытия. Такой режим удобен для показа изменяемых форм, когда вызывающий код продолжает изменения, когда форма уже выведена на экран.
  • <Путь или имя базы данных (STRING)> - Строковое представление данного аргумента может представлять собой путь к объекту базы данных, относительный путь к папке проекта на сервере, абсолютный путь к папке проекта на локальном компьютере. См. описание этой функции для более полной информации. Также можно указывать путь к внешнему объекту и путь внутри него (см. Имена файлов).
  • <Параметр>,<Опция> - (возможен аргумент-переменная (ByRef)) (необязательный аргумент) Аргументы передаются в вызываемую форму без изменения, и могут использоваться по усмотрению разработчика. Аргументы будут доступны при вызове визуальных событий инициализации элементов форм (к примеру OnInitLine) или в визуальном событии OnOpen под именами Param и Option.
  • <Имя формы (STRING)> - (необязательный аргумент) Имя загружаемой формы, если этот параметр не указан, будет использовано имя Form.
  • <Объект открытой формы (FORM)> - (возможен аргумент-переменная (ByRef)) Переменная, которая получит объект созданной формы. Если открытие формы было прервано по какой-то причине, переменная не будет изменена.

Возвращаемое значение

Функция возвращает значение переменной ModalResult, которая доступна для изменения при инициализации открываемой формы.

Примеры

//Создается глобальное дополнительное окно с возможностью настроить кассовую машину
Сп:=List.Create();
Сп.SetByName("Параметр 1",аПараметр1);
Сп.SetByName("Параметр 2",аПараметр2);
LoadToolForm(1,1,"Modules\FreeForms\Касса\Настройка кассовой машины",Сп,0,"Form");