Clarion - DEFINIR CLASES EXPORTABLES.

 
Vista:
sin imagen de perfil

DEFINIR CLASES EXPORTABLES.

Publicado por JAVIER (11 intervenciones) el 14/01/2016 12:15:19
No he visto mucho relacionado con la creación y uso de CLASES en Clarion en los foros y en los fuentes que conozco, así que lo último que conseguí fue autodidacta y con mucha PRUEBA-ERROR, con mucho, mucho ERROR.

En algún caso ya estoy manejando, dentro de una .App CLASES definidas por mí para utilizarlas como objetos. El problema que tengo es que NO SOY CAPAZ definirlas para EXPORTACIÓN, para poder reutilizarlas e instanciarlas desde otras .App distintas a donde define sus propiedades y métodos.

He probado en el "Global" a definir allí sus propiedades y métodos pero no soy capaz de ver la clase y sus métodos en otras .App's.
Por otro lado, me gustaría no tenerla Definda en el "Globlal" si no en alguno de los Módulos no principales de la App y que sus Métodos sean visibles como PROCEDURES principales de la App. Pero esto me da errores en la Compilación. Cuando intendo definir un PROCEDURE como ClaseTipo.Metodo ó bien parametrizando la Clase, Metodo(ClaseTipo SELF) peta la compilación. Me indica que el PROCEDURE no coincide con el Prototype del MAP cuando en el Prototype pongo exactamente los mismo tipos que corresponden a los parámetros que indico en el Procedure y que éstos coinciden con los Tipo y parámetros del Método dentro de la CLASE.

Añado un Ejemplo de CLASE que me funciona perféctamente dentro de la APP pero que no soy capaz de EXPORTAR (necesitaría tamién la configuración necesaria en la .App que debe importarla)

- En el Global, Embeds, Source en la sección del "Global Data":

!===Declaración (Atributos y Métodos de la Clase ===========
WasteTypeAttribs CLASS, TYPE !(19/05/15) Atributos del <Waste<Doc>Type .. > en las Cabeceras de Doc's XML E3L vía Web Services.
!-- Atributos de la Clase
xsi STRING(45)
xsd STRING(35)
...
!-- Métodos de la Clase
putWT PROCEDURE (STRING ps_xsi, STRING ps_xsd, ... )
END

- En el mismo Embeds del "Global", Source en sección "Program Procedures":

!=== Implementación de los Métodos de la Clase =======
WasteTypeAttribs.putWT PROCEDURE (STRING ps_xsi, STRING ps_xsd, ...)
CODE
!--- xsi y xsd, por defecto si llegan vacíos.
If clip(ps_xsi) = '' Then Self.xsi = 'http://www.w3.org/2001/XMLSchema-instance' |
Else Self.xsi = ps_xsi.
If clip(ps_xsd) = '' Then Self.xsd = 'http://www.w3.org/2001/XMLSchema'
Else Self.xsd = ps_xsd.
Self.Code = ps_Code
...
Return

- Uso de la Clase, Declaración de Objeto de Clase, en "Local Variables"
oWTAtt &WasteTypeAttribs

- Uso de Objeto de Clase, Instanciación y Carga del Objeto:

oWTAtt &= NEW(WasteTypeAttribs) !CREACION del Objeto Referencia.
oWTAtt.putWT('','', clip(RSM14:LIBRE48), '', '',Today(), ... ) !Envío de Valores a sus Atributos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder