Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #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
Poder: 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
  #2  
Antiguo 05-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Me perdí de algo o no estas creando una instancia... estas intentando ejecutar Agregar() sobre la clase, no sobre una instancia válida del objeto.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 05-10-2006
Avatar de buildero_d
buildero_d buildero_d is offline
Miembro
 
Registrado: sep 2005
Ubicación: Puebla, México
Posts: 37
Poder: 0
buildero_d Va por buen camino
Que tal Juan.. gracias por contestar...
Efectivamente, ese es el problema que no es una instancia válida. Lo que necesito es intanciar mi clase.

FindClass me regresa un puntero de tipo TMetaClass,

AnsiString Clase = "TProcesoA";

RegisterClass(__classid(TProcesoA));
TMetaClass * Proc;
Proc = FindClass(Clase);

...?????



la pregunta es.... ¿puedo crear una instancia de mi clase a traves de este puntero?

Saludos y gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Clase Serializable luismolina OOP 7 09-05-2006 23:10:53
Ayuda Con Clase DES edgusano .NET 2 04-04-2005 22:05:41
Métodos de clase. jplj OOP 14 22-11-2004 09:30:19
Instanciar un form más de una vez vpepen Varios 6 30-07-2004 13:44:35
...la clase... Jure Humor 0 27-07-2004 20:00:47


La franja horaria es GMT +2. Ahora son las 00:17:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi