Estimados Amigos
Usa una funcion para crear DATAfields
function TMyMSQuery( cCls ) ; return( MyGenClass( cCls, TMSQuery() ) )
Uso una variable __aHCls a la que le agrego AAdd( __aHCls, { cClsName, __nClassH } ) la clase
y su manejador pero no se como liberar esro por que cada vez que llamo a la clase
me consume recursos
static __aHCls := {}
#include "HbClass.ch"
//---------------------------------------------------------------------------//
// Generador de clases dinamicas
function MyGenClass( cClsName, FromClass )
local n, __nClassH, __odB
local cFromClass := upper( FromClass:ClassName() )
cClsName := "TMY" + Upper( if( empty( cClsName ), ;
PadL( len( __aHCls ), 7, "0" ), Alltrim( cClsName ) ) )
if ( n := AScan( __aHCls, { |aClass| aClass[ 1 ] == cClsName } ) ) == 0
_HB_CLASS cClsName
__oDb := HBClass():New( cClsName, { cFromClass } )
__oDb:Create()
__nClassH := __oDb:hClass
AAdd( __aHCls, { cClsName, __nClassH } )
else
__nClassH := __aHCls[ n, 2 ]
endif
return( __clsInst( __nClassH ) )
Ahora si creo una funcion para eliminar del __aHCls los manejadores
de la clase una vez q termino de usarla
/// eliminar de __aHCLS la clase generada
Function CloseClass( oClase )
Local n,cClsName
cClsName := "TMY" + Upper( PadL( len( __aHCls ), 7, "0" ) )
if ( n := AScan( __aHCls, { |aClass| aClass[ 1 ] == cClsName } ) ) == 0
// ya se creo la clase
else
__aHCls[ n, 1 ]:=NIL
__aHCls[ n, 2 ]:=NIL
ADEL( __aHCls , n )
endif
oClase:=NIL
return( cClsName )
Se que se crea una clase TMY00005 pero no se como liberar de memoria esta clase y su data