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 08-05-2008
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Uses de un subcomponente

Hola, tengo un problema al crear un subcomponente con setsubcomponent y es el siguiente:

En la unidad del componente creo el subcomponente y no hay ningun problema.
Código Delphi [-]
Type   TTCP= class(TIdTCPClient)
private 
    FThreadcomponent:TIdThreadComponent;  
.............   

constructor TTCP.Create(AOwner: TComponent);
begin   inherited Create(AOwner);

  FThreadcomponent := TidThreadcomponent.Create (Self) ;
  FThreadcomponent.Name:='ThreadComponent';
  FThreadcomponent.SetSubComponent (True);


end;

Bueno para crear este subcomponente tengo que añadir a la seccion uses IdThreadComponent como es logico.
A la hora de usar el componente en el formulario cuando arrasto el componente y ejectuto la aplicacion delphi añade automaticamente las librerias necesarias para ese componente a la seccion uses del formulario pero no asi la unidad IdThreadComponent necesaria para el subcomponente.
La pregunta es ¿hay alguna forma a la hora de crear el componente de hacer que delphi añada la unidad correspondiente al subcomponente cuando se utiliza en una aplicacion?

Gracias por el tiempo que dediquen a mi pregunta.

Un Saludo.

Última edición por white_zombie fecha: 08-05-2008 a las 17:20:19.
Responder Con Cita
  #2  
Antiguo 08-05-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Lo correcto es crear un paquete del componente y de todas las units q necesita y instalar este paquete en la paleta, asi como en el search path (a veces, otras veces es innecesario) de opciones de proyecto. Al menos en delphi 5 funciona mas o menos asi.
Responder Con Cita
  #3  
Antiguo 08-05-2008
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Gracias por tu respuesta, ya creo un paquete con el componente y las units que necesita se introducen en la seccion uses de la unidad del componente no?
Haciéndolo así me ocurre lo que explico en el primer mensaje.
Responder Con Cita
  #4  
Antiguo 08-05-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Te hablo desde delphi 5, no se si en versiones siguientes ha cambiado el procedimiento. Creas un nuevo proyecto de package (.dpk) que no es mas que un proyecto de componente. Encontraras dos nodos en un arbol, el uno es contains y el otro requires. Añade las units q necesita para compilar en el 'contains' (incluida la implementacion de tu componente, el cual debe tener en sus uses referencias a las units q necesita) y quedaran insertadas dentro del .dpk. Ahora mismo, ya tendrias todo el componente encapsulado. Si lo compilas, te resultara en un .bpl, que es un paquete/libreria ya compilado. Este lo puedes luego añadir a la paleta con (Delphi 5) Component->Install Packages, y en teoria las units q usa el componente no las deberas colocar en ningun sitio mas.
Venga, espero que te sirva.

edito : en las opciones del .dpk, tendra q estar en el search path las rutas, claro esta...

Última edición por coso fecha: 08-05-2008 a las 19:09:11.
Responder Con Cita
  #5  
Antiguo 08-05-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Si el componente u objeto que usas dentro de tu componente no es visible fuera de este, no es necesario hacer referencia a este en el uses de la unidad que lo va a usar. A menos claro que tengas que usar algún tipo de datos definido en esa unidad, en dado caso, tienes que ponerla de forma manual en el uses.


Saludos...
Responder Con Cita
  #6  
Antiguo 08-05-2008
Avatar de white_zombie
[white_zombie] white_zombie is offline
Miembro Premium
 
Registrado: nov 2005
Ubicación: Zaragoza - España
Posts: 187
Poder: 19
white_zombie Va por buen camino
Gracias a los dos, mi caso es la segunda opción que dice Maeyanes, por lo que me queda claro que hay que poner manualmente la unidad del subcomponente en el uses del formulario.

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
Error de herencia en diseño con subcomponente rastafarey OOP 5 12-05-2013 11:48:34


La franja horaria es GMT +2. Ahora son las 13:57:53.


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