Crear una clase y datas a petición

Crear una clase y datas a petición

Postby Xevi » Wed Dec 20, 2017 11:20 am

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  Expand view

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
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Crear una clase y datas a petición

Postby Antonio Linares » Wed Dec 20, 2017 11:24 am

Prueba así:

EXTEND CLASS AppData WITH DATA ( cData )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41205
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Crear una clase y datas a petición

Postby Xevi » Wed Dec 20, 2017 11:43 am

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
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Crear una clase y datas a petición

Postby cnavarro » Wed Dec 20, 2017 11:51 am

Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Crear una clase y datas a petición

Postby Antonio Linares » Wed Dec 20, 2017 11:53 am

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41205
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Crear una clase y datas a petición

Postby Antonio Linares » Wed Dec 20, 2017 11:56 am

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41205
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Crear una clase y datas a petición

Postby Xevi » Wed Dec 20, 2017 12:26 pm

Hecho!!!

Cristobal, me anoto el Manual de Harbour :lol:
Gracias.

Todavia mas lejos, pues, creo la Data y le doy valor al mismo tiempo.

con
AppData():AddData( "NoSe", "Prueba_NoSe" )


Code: Select all  Expand view

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
 
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Crear una clase y datas a petición

Postby cnavarro » Wed Dec 20, 2017 1:56 pm

Xevi wrote:Hecho!!!

Cristobal, me anoto el Manual de Harbour :lol:
Gracias.



Si utilizas FivEdit, al pulsar F1 te aparece el manual

Image
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Crear una clase y datas a petición

Postby Xevi » Wed Dec 20, 2017 2:04 pm

Cristobal,

pulso F1 y...

[img]
Image
[/img]
Last edited by Xevi on Wed Dec 20, 2017 2:09 pm, edited 2 times in total.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Crear una clase y datas a petición

Postby cnavarro » Wed Dec 20, 2017 2:08 pm

Mira tu correo
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6498
Joined: Wed Feb 15, 2012 8:25 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 10 guests