Page 1 of 1
Crear una clase y datas a petición
Posted: Wed Dec 20, 2017 11:20 am
by Xevi
Ahora estoy con tema de Clase propia para disponer de ella en la aplicación.
Resulta que crear una clase con DATAs no hay problema, el caso es que a medida que voy escribiendo código de mi aplicación, igual necesito de una DATA más en esa clase, y pretendo crearla, pero sin tener que ir a buscar la clase y añadir
//...
DATA cUnaDataMas
//...
Para eso, pensava echar mano de EXTEND CLASS
Y poder mandarle desde código de un prg mismo...
AppData():AddData( "cUnaDataMas" )
Code: Select all
CLASS AppData
DATA cargo
METHOD AddData( cData )
ENDCLASS
METHOD AddData( cData ) CLASS AppData
EXTEND CLASS AppData WITH DATA cData //Per crear una DATA en una clase
return Nil
Pero no se como hacerlo para que me coja el valor enviado, pues me crea una data, si, pero me crea cData y no cUnaDataMas
Gracias
Re: Crear una clase y datas a petición
Posted: Wed Dec 20, 2017 11:24 am
by Antonio Linares
Prueba así:
EXTEND CLASS AppData WITH DATA ( cData )
Re: Crear una clase y datas a petición
Posted: Wed Dec 20, 2017 11:43 am
by Xevi
Sintax error.
Tambien probado con...
EXTEND CLASS AppData WITH DATA (cData)
EXTEND CLASS AppData WITH DATA &(cData)
EXTEND CLASS AppData WITH DATA &cData
Siempre Sintax error al compilar
Re: Crear una clase y datas a petición
Posted: Wed Dec 20, 2017 11:51 am
by cnavarro
Re: Crear una clase y datas a petición
Posted: Wed Dec 20, 2017 11:53 am
by Antonio Linares
Xevi,
Usa directamente el preprocesado de ese comando:
#xcommand EXTEND CLASS <!Class!> WITH <data: DATA, VAR> <!VarName!> ;
[SCOPE <scope>] [<persist: PERSISTENT>] ;
[<case: NOUPPER>] => ;
__clsAddMsg( <Class>():classH, #<VarName>, ;
__cls_IncData( <Class>():classH ), ;
HB_OO_MSG_PROPERTY, NIL, ;
__xhb_cls_scope( <scope>, <.persist.> ) )
Llama directamente a la función __clsAddMsg() con los parámetros adecuados
Re: Crear una clase y datas a petición
Posted: Wed Dec 20, 2017 11:56 am
by Antonio Linares
Mejor con la función que te ha indicado Cristobal que lo que hace es llamar finalmente a __clsAddMsg()
FUNCTION __objAddData( oObject, cSymbol )
LOCAL nSeq, hClass
IF ! HB_ISOBJECT( oObject ) .OR. ! HB_ISSTRING( cSymbol )
__errRT_BASE( EG_ARG, 3101, , ProcName( 0 ) )
ELSEIF ! __objHasMsg( oObject, cSymbol ) .AND. ! __objHasMsg( oObject, "_" + cSymbol )
hClass := oObject:ClassH
nSeq := __cls_IncData( hClass ) // Allocate new Seq#
__clsAddMsg( hClass, cSymbol, nSeq, HB_OO_MSG_ACCESS, , 1 )
__clsAddMsg( hClass, "_" + cSymbol, nSeq, HB_OO_MSG_ASSIGN, , 1 )
ENDIF
RETURN oObject
Re: Crear una clase y datas a petición
Posted: Wed Dec 20, 2017 12:26 pm
by Xevi
Hecho!!!
Cristobal, me anoto el Manual de Harbour
Gracias.
Todavia mas lejos, pues, creo la Data y le doy valor al mismo tiempo.
con
AppData():AddData( "NoSe", "Prueba_NoSe" )
Code: Select all
CLASS AppData
DATA cargo
METHOD AddData( cData, xValue )
ENDCLASS
METHOD AddData( cData, xValue ) CLASS AppData
* __objAddData( Self, cData ) //Solo crea la Data
__objAddInline( Self, cData, { || xValue } ) //Crea la data y le da valor
return Nil
Re: Crear una clase y datas a petición
Posted: Wed Dec 20, 2017 1:56 pm
by cnavarro
Xevi wrote:Hecho!!!
Cristobal, me anoto el Manual de Harbour
Gracias.
Si utilizas FivEdit, al pulsar F1 te aparece el manual
Re: Crear una clase y datas a petición
Posted: Wed Dec 20, 2017 2:04 pm
by Xevi
Cristobal,
pulso F1 y...
[/img]
Re: Crear una clase y datas a petición
Posted: Wed Dec 20, 2017 2:08 pm
by cnavarro
Mira tu correo