Ver Mensaje Individual
  #1  
Antiguo 04-10-2006
Avatar de buildero_d
buildero_d buildero_d is offline
Miembro
 
Registrado: sep 2005
Ubicación: Puebla, México
Posts: 37
Reputación: 0
buildero_d Va por buen camino
Instanciar Clase

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:
Código:
#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

Código:
#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:

Código:
    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 .... 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!

Gracias!!!
Responder Con Cita