Página 1 de 1

Sobre PROPERTYs y Macros

Publicado: Dom Abr 14, 2013 9:28 am
por Carlos Ortiz
Básicamente lo que quiero es asignar valores a las PROPIEDADES de una
clase usando macrosus.
Algo básico pero en mas o menos lo que hago y que quiero optimizar.
#include "Xailer.ch"
//---------------------------------------------------------- --------------------
CLASS Empresas From TComponent
METHOD DevolverID()
PROPERTY idempresa INIT 0
PROPERTY idpersonaj INIT 0
ENDCLASS
//---------------------------------------------------------- --------------------
METHOD DevolverID( ID ) CLASS Empresas
local hArray:= AppData:oSql:QH( "select idempresa, idpersonaj from
empresas")
// Levanto en un hash todos los campos de la tabla.
// Luego a cada PROPIEDAD le asigno el valor de su elemento hash
correspondiente
::idempresa := hArray["idempresa"]
::idpersonaj := hArray["idpersonaj"]
RETURN .t.
---
Lo que busco es hacerlo mas práctico y en un par de lineas
local cCampo := ""
FOR i = 1 to len(hArray) // Recorro el hash
cCampo := HGetKeyAt( hArray, i ) // En cCampo guardo
"idempresa"por ejemplo
::&cCampo := hArray[cCampo] // Acá quiero que
::idempresa := 1 tome el valor del hash
NEXT
Y no quiere, en todos los casos ::&cCampo se setea en 0.
Desde ya muchas gracias.

Sobre PROPERTYs y Macros

Publicado: Dom Abr 14, 2013 1:23 pm
por jfgimenez
Carlos,
> ::&cCampo := hArray[cCampo] // Acá quiero que ::idempresa :=
> 1 tome el valor del hash
__ObjSendMsg( Self, "_" + cCampo, hArray[ cCampo ] )
y si lo que quieres es leer su valor, entonces:
__ObjSendMsg( Self, cCampo ) --> <valor>
NOTA: ojo al uso del guión bajo ("_"). Hay que usarlo siempre que vayas
a escribir en esa propiedad, y nunca cuando se va a leer.
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info

Sobre PROPERTYs y Macros

Publicado: Mar Abr 16, 2013 2:55 am
por Carlos Ortiz
De primera José, muchas gracias! con esto voy a optimizar las clases.