Sintaxis
Funció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
|