.. _advdiagram_frame_g1: AdvDaigram ~~~~~~~~~~~~~~~~ Класс фрейма: .. class:: btkFrame.TbtkLookUpAdvDiagramFrame .. seealso:: :java:type:`AdvDiagram` Связывание элементов диаграммы с объектами БД ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ К элементам диаграммы можно привязать объекты :term:`БД`, относящиеся к определенному классу, в результате чего в контекстном меню элемента появятся дополнительные операции, с помощью которых можно взаимодействовать как с самим элементом, так и с привязанным объектом. Связываемые объекты должны принадлежать классам, которые указываются в :term:`пространстве классов<Пространство классов AdvDiagram>` диаграммы. Для каждого указываемого класса выбирается его :term:`пространство операций<Пространство операций класса>`. Просмотреть и отредактировать имеющиеся в базе пространства операций можно с помощью выборки ``SEL_BTD_OPERATIONDOMAIN.List``. Все перечисленные в пространстве операции будут отображаться в контекстном меню элемента диаграммы, если с ним связан хотябы один объект класса, использующего данное пространство операций. Если к элементу диаграммы привязано более одного объекта, в контекстном меню произойдет группировка операций по привязанным объектам. .. note:: Если для класса привязываемого объекта в :term:`пространстве классов<Пространство классов AdvDiagram>` не указано пространство операций, в контекстное меню ничего не добавится. Каждой операции можно установить флаг автоматического выполнения при привязывании и отвязывании объекта. Операции с этими включенными флагами будут выполнены после закрытия формы **Объекты, привязанные к элементу схемы**. Операции выполняются в контексте выборки диаграммы. Для взаимодействия со связанными сущностями из скриптера имеются следующие переменные: * ``IDDBObject#`` - ID привязанного объекта БД. Используется в методах :pas:meth:`TbtkAdvDiagramItems.SetItemsCaptionByObjectID` и :pas:meth:`TbtkAdvDiagramItems.HighLightItemsByObjectID`. Также можно использовать в методах :pas:meth:`TbtkScriptSelectionObject.CreateFormEx` и :pas:meth:`TbtkScriptSelectionObject.DoLookup` в качестве значения параметра ID объекта выборки. * ``IDOBJ#`` - ID элемента диаграммы. .. code-block:: pascal :caption: Пример операции, выделяющей элемент диаграммы: if Assigned(diagram) then begin diagram.BeginUpdate; try diagram.HighLightedItemBorderThickness := 2; diagram.HighLightedItemBorderColor := StrToInt('$265700'); diagram.Items.HighLightItemsByObjectID(GetVar('IDDBObject#'), true); finally diagram.EndUpdate; end; end else ShowMessage('Диаграмма не найдена'); .. code-block:: pascal :caption: Пример операции, открывающей карточку связанного объекта: CreateFormEx('', 'SELCARD_EO_AccPoint_Tree', fcfModal, ['idAccPointItem#'], [GetVar('IDDBObject#')]); Для того, чтобы связать элемент диаграммы с объектом БД необходимо вызвать контекстное меню необходимого элемента и выбрать "Привязанные объекты БД...". После этого откроется форма с объектами БД, привязанными к данному элементу. Для добавления новых объектов, необходимо вызвать одну из операций ``Связать с объектом класса: X``, где ``X`` - названия классов, перечисленных в текущем :term:`пространстве классов<Пространство классов AdvDiagram>` диаграммы.