Crear una clase y datas a petición

Post Reply
User avatar
Xevi
Posts: 168
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Crear una clase y datas a petición

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

Aprendiz de la vida!!!
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Crear una clase y datas a petición

Post by Antonio Linares »

Prueba así:

EXTEND CLASS AppData WITH DATA ( cData )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Xevi
Posts: 168
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Crear una clase y datas a petición

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

Aprendiz de la vida!!!
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Crear una clase y datas a petición

Post by cnavarro »

C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Crear una clase y datas a petición

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

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

Re: Crear una clase y datas a petición

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

Antonio Linares
www.fivetechsoft.com
User avatar
Xevi
Posts: 168
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Crear una clase y datas a petición

Post by Xevi »

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

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
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Crear una clase y datas a petición

Post by cnavarro »

Xevi wrote:Hecho!!!

Cristobal, me anoto el Manual de Harbour :lol:
Gracias.
Si utilizas FivEdit, al pulsar F1 te aparece el manual

Image
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
User avatar
Xevi
Posts: 168
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Crear una clase y datas a petición

Post by Xevi »

Cristobal,

pulso F1 y...

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
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Crear una clase y datas a petición

Post by cnavarro »

Mira tu correo
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Post Reply