buildero_d
04-10-2006, 23:09:01
Que tal Colegas...
He estado tratando de crear una instancia una clase que he diseñado pero desde código.
Esta clase hereda de una clase abstracta y ésta es la definición
Clase abstracta:
#ifndef ProcesoH
#define ProcesoH
#include <vcl.h>
//---------------------------------------------------------------------------
class TProceso : public TPersistent
{
private:
int FID;
protected:
virtual void __fastcall Asignar() = 0;
public:
__fastcall TProceso();
__fastcall ~TProceso();
virtual bool __fastcall Agregar() = 0;
__property int ID = {read=FID, write=FID};
};
#endif
Y ésta es la clase que hereda de la abstracta
#ifndef ProcesoAH
#define ProcesoAH
#include "Proceso.h"
//---------------------------------------------------------------------------
class TProcesoA : public TProceso
{
private:
AnsiString FDatoA;
protected:
void __fastcall Asignar();
public:
__fastcall TProcesoA();
__fastcall ~TProcesoA();
bool __fastcall Agregar();
__published:
__property AnsiString DatoA = {read=FDatoA, write=FDatoA};
};
extern PACKAGE TProcesoA *ProcesoA;
#endif
Lo que intento es que a partir del nombre de la clase craer una instancia y poder utilizar sus métodos. El nombre de la clase a instanciar varia, pero todas heredan de TProceso.
Ej.
Primero registro la clase y posteriormente la busco a través de FindClass e intento accesar a sus métodos de la siguiente manera:
AnsiString Clase = "TProcesoA";
RegisterClass(__classid(TProcesoA));
TPersistentClass Proc;
Proc = FindClass(Clase);
((TProceso*)&Proc)->Agregar();
Sin embargo al utilizar cualquier método accesandolo de la manera en como se muestra arriba, toda referencia sobre elementos visuales (TComboBox, TButton) que tenga en mi form pasan a NULL :eek: .... y ya no puedo tener acceso a ellos
Le he dado muchas vueltas y no lo he conseguido... :(
En general quiero crear la instancia de la clase, es decir, crear el objeto y trabajar con sus métodos... pero esto depende del nombre de la clase a crear.
Si alguien tiene alguna sugerencia....será bienvenida! :rolleyes:
Gracias!!!
He estado tratando de crear una instancia una clase que he diseñado pero desde código.
Esta clase hereda de una clase abstracta y ésta es la definición
Clase abstracta:
#ifndef ProcesoH
#define ProcesoH
#include <vcl.h>
//---------------------------------------------------------------------------
class TProceso : public TPersistent
{
private:
int FID;
protected:
virtual void __fastcall Asignar() = 0;
public:
__fastcall TProceso();
__fastcall ~TProceso();
virtual bool __fastcall Agregar() = 0;
__property int ID = {read=FID, write=FID};
};
#endif
Y ésta es la clase que hereda de la abstracta
#ifndef ProcesoAH
#define ProcesoAH
#include "Proceso.h"
//---------------------------------------------------------------------------
class TProcesoA : public TProceso
{
private:
AnsiString FDatoA;
protected:
void __fastcall Asignar();
public:
__fastcall TProcesoA();
__fastcall ~TProcesoA();
bool __fastcall Agregar();
__published:
__property AnsiString DatoA = {read=FDatoA, write=FDatoA};
};
extern PACKAGE TProcesoA *ProcesoA;
#endif
Lo que intento es que a partir del nombre de la clase craer una instancia y poder utilizar sus métodos. El nombre de la clase a instanciar varia, pero todas heredan de TProceso.
Ej.
Primero registro la clase y posteriormente la busco a través de FindClass e intento accesar a sus métodos de la siguiente manera:
AnsiString Clase = "TProcesoA";
RegisterClass(__classid(TProcesoA));
TPersistentClass Proc;
Proc = FindClass(Clase);
((TProceso*)&Proc)->Agregar();
Sin embargo al utilizar cualquier método accesandolo de la manera en como se muestra arriba, toda referencia sobre elementos visuales (TComboBox, TButton) que tenga en mi form pasan a NULL :eek: .... y ya no puedo tener acceso a ellos
Le he dado muchas vueltas y no lo he conseguido... :(
En general quiero crear la instancia de la clase, es decir, crear el objeto y trabajar con sus métodos... pero esto depende del nombre de la clase a crear.
Si alguien tiene alguna sugerencia....será bienvenida! :rolleyes:
Gracias!!!