Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-03-2007
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 19
AFilth Va por buen camino
Como obtener propiedad de una clase que está en una bpl dinámica?

Buenas tardes, a ver si alguien es capaza de resolver este problema...

Tengo una bpl dinámica en la que tengo una clase A.

En mi dpr principal tengo la Clase APADRE de la que hereda la clase A.

Desde mi dpr principal cargo esa Bpl dinámica, como podría acceder a la clase A ó a una de sus propiedades?

No tengo ni idea de como hacerlo pero quería saber si hay algo de tipo:

(ObjetoDeLaClaseAPADRE as A).PropiedadDeLaClaseA

teniendo en cuenta que yo desde mi dpr no veo nada de la bpl dinámica.

Un saludo.
Responder Con Cita
  #2  
Antiguo 02-03-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En la BPL debes registrar la clase a la que quieres acceder utilizando RegisterClass.

Código Delphi [-]
  RegisterClass(TClaseEnBPL);


Luego para poder acceder a ella desde otro lugar de la aplicación puedes utilizar RTTI. Con el método GetClass puede acceder a la clase a partir de su nombre.

Revisa la ayuda hay algun ejemplo.
También puedes buscar por internet un artículo de "Vino Rodrigues" sobre packages dinámicos. Recuerdo que está muy bien explicado.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 03-03-2007
Avatar de poliburro
[poliburro] poliburro is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: México D.F
Posts: 3.068
Poder: 23
poliburro Va por buen camino
Este ejemplo carga una clase contenida en un paquete

Código Delphi [-]
 
var
 MHmodfrm : HModule;          
 MTpcfrm : TPersistentClass;  
 Miforma : TFrmBas;        
begin
  MHmodfrm := LoadPackage('rutapaquete');
  clase := GetClass('TClasePErsonalizada');
  Miforma   := TComponentClass(MTpcfrm).Create(Application) As TFrmBas;  
  Miforma.Propiedad := 'Algo'; 
  Miforma.Free;
  UnloadModuleFromInstances(MHmodfrm);
  UnloadPackage(MHmodfrm);
end;


Sencillito pues :P.

si necesitas más detalles, el libro de marco cantú Delphi 7, trae unos excelentes ejemplos.

Suerte
__________________
Conoce mi blog http://www.edgartec.com
Responder Con Cita
  #4  
Antiguo 05-03-2007
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 19
AFilth Va por buen camino
Muchas gracias por la ayuda, he estado trasteando con ello y viendo ejemplos y más ejemplos pero creo que no lo puedo hacer ya que mi clase hereda de TObject y no de TComponent y al hacer el:

RegisterClass(TClaseEnBPL);

me da error ya que creo que sólo se pueden registrar clases que hereden de TComponent.

Por otro lado al hacer el:

clase := GetClass('TClasePErsonalizada');

siempre me da que clase es nil ya que supongo no llega a registrarse.

Sigo buscando soluciones...gracias.
Responder Con Cita
  #5  
Antiguo 05-03-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por AFilth
...creo que no lo puedo hacer ya que mi clase hereda de TObject y no de TComponent y al hacer el...
El realidad debe derivar de TPersistent, pero no es ningun problema. Puedes cambiar la herencia de tu clase para que en lugar de derivar de TObject, derive de TPersistent (TPersistent deriva a su vez de TObject).
No pierdes nada, al contrario, tal vez estés agregando a tu clase algunas características que no necesita, pero ya está.


Cita:
Empezado por AFilth
...
clase := GetClass('TClasePErsonalizada');
siempre me da que clase es nil ya que supongo no llega a registrarse.
Eso es debido a lo comentado más arriba.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 05-03-2007
AFilth AFilth is offline
Miembro
 
Registrado: ago 2005
Posts: 119
Poder: 19
AFilth Va por buen camino
Sí, suponía que era por eso, pero la verdad que no me atrevía a cambiar la herencia ya que es una clase muy muy gorda dentro del programa que se usa en muchísimos sitios y me daba cosa, ya que creía que podría tener luego problemas con ella...pero bueno, viendo tu comentario me animaré a hacer la prueba y ya os contaré como ha ido todo.

Muchas gracias y un saludo.
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
Usar una clase que esta dentro de una libreria lookmydoom OOP 3 18-04-2006 15:25:34
Obtener el directorio donde está el ejecutable daly Varios 3 13-10-2005 19:29:18
Propiedad que me indica si un DBMemo está vacio gluglu Varios 4 10-02-2005 16:48:17
Una clase como propiedad de un componente? setry2 OOP 3 30-12-2003 21:30:58
Obtener la clase de objetos Feñiz OOP 7 08-05-2003 20:21:55


La franja horaria es GMT +2. Ahora son las 23:58:46.


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