EA_GetCompartmentData

Superior  Previo  Próximo

Sintaxis

Funcción EA_GetCompartmentData(Repository somo EA.Repository, sCompartment como String, sGUID como String, oType como EA.ObjectType) como Variante

La sintaxis de la función EA_QueryAvailableCompartments contiene los siguientes elementos:

Parámetro

Tipo

Dirección

Descripción

Repository

EA.Repository

IN

Un objeto EA.Repository representando el modelo de Enterprise Architect actualmente abierto. Registra sus miembros para recuperar los datos del modelo y la información del estado de la interfaz de usuario.

sCompartment

String

IN

El nombre del compartimiento para el cual se piden los datos.

sGUID

String

IN

El GUID del elemento para el cual se piden los datos.

oType

ObjectType

IN

El tipo del elemento para el para el cual se piden los datos.

Valor de retorno

Variante que contiene un string formateado. Vea el siguiente ejemplo para entender el formato.

Detalles

Este evento ocurre cuando Enterprise Architect se estructura para re dibujar un elemento. Este pide que el add-in provea los datos para poblar el compartimiento del elemento.

Ejemplo

 

Function EA_GetCompartmentData(Repository As EA.Repository, sCompartment As String, sGUID As String, oType As EA.ObjectType) As Variant

If Repository Is Nothing Then

Exit Function

End If

Dim sCompartmentData As String

Dim oXML As MSXML2.DOMDocument

Dim Nodes As MSXML2.IXMLDOMNodeList

Dim Node1 As MSXML2.IXMLDOMNode

Dim Node As MSXML2.IXMLDOMNode

Dim sData As String

 

sCompartmentData = ""

Set oXML = New MSXML2.DOMDocument

sData = ""

On Error GoTo ERR_GetCompartmentData

oXML.loadXML (Repository.GetTreeXMLByGUID(sGUID))

Set Node1 = oXML.selectSingleNode("//ModelItem")

If Node1 Is Nothing Then

Exit Function

End If

sCompartmentData = sCompartmentData + "Name=" + sCompartment + ";"

sCompartmentData = sCompartmentData + "OwnerGUID=" + sGUID + ";"

sCompartmentData = sCompartmentData + "Options=SkipIfOnDiagram&_eq_^1&_sc_^"

Select Case sCompartment

Case "parts"

Set Nodes = Node1.selectNodes("ModelItem[@Metatype=""Part""]")

For Each Node In Nodes

sData = sData + "Data&_eq_^" + Node.Attributes.getNamedItem("Name").nodeValue + "&_sc_^"

sData = sData + "GUID&_eq_^" + Node.Attributes.getNamedItem("GUID").nodeValue + "&_sc_^,"

Next

 

Case "ports"

Set Nodes = Node1.selectNodes("ModelItem[@Metatype=""Port""]")

For Each Node In Nodes

sData = sData + "Data&_eq_^" + Node.Attributes.getNamedItem("Name").nodeValue + "&_sc_^"

sData = sData + "GUID&_eq_^" + Node.Attributes.getNamedItem("GUID").nodeValue + "&_sc_^,"

Next

 

End Select

' If there's no data to display, then don't return any compartment data

If sData <> "" Then

sCompartmentData = sCompartmentData + "CompartmentData=" + sData + ";"

Else

sCompartmentData = ""

End If

EA_GetCompartmentData = sCompartmentData

Exit Function

ERR_GetCompartmentData:

EA_GetCompartmentData = ""

End Function