FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Crear una clase y datas a petici贸n
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Crear una clase y datas a petici贸n
Posted: 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 (fw): Select all Collapse
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!!!
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Crear una clase y datas a petici贸n
Posted: Wed Dec 20, 2017 11:24 AM

Prueba as铆:

EXTEND CLASS AppData WITH DATA ( cData )

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Crear una clase y datas a petici贸n
Posted: 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!!!
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Crear una clase y datas a petici贸n
Posted: 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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Crear una clase y datas a petici贸n
Posted: 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
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Crear una clase y datas a petici贸n
Posted: 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
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Crear una clase y datas a petici贸n
Posted: Wed Dec 20, 2017 12:26 PM
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 (fw): Select all Collapse
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!!!
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Crear una clase y datas a petici贸n
Posted: Wed Dec 20, 2017 01:56 PM
Xevi wrote:Hecho!!!

Cristobal, me anoto el Manual de Harbour :-)
Gracias.



Si utilizas FivEdit, al pulsar F1 te aparece el manual

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
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Crear una clase y datas a petici贸n
Posted: Wed Dec 20, 2017 02:04 PM
Cristobal,

pulso F1 y...

[img]https://s19.postimg.org/73vsnvx2n/Captura.jpg" alt="" loading="lazy">
[/img]
Un Saludo,

Xevi.



Aprendiz de la vida!!!
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Crear una clase y datas a petici贸n
Posted: Wed Dec 20, 2017 02: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

Continue the discussion