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 12-04-2010
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
Hola de nuevo, ElDuc:

Lo que voy a comentarte ya está en mi post anterior. Veamos, los componentes los defines e implementas en unidades aparte de la que vas utilizar para registrarlos, y que llamaremos en adelante MisComposReg.pas, por ejemplo. Da igual si utilizas una sola unit para implementar unos cuantos componentes (esto sucede muchas veces en la VCL), o como recomienda Marco Cantú dedicas una unit exclusivamente para cada componente. Pero lo que importa es que en estas unidades no hagas ninguna mención a las unidades de diseño: DesignIntf, DesignEditors, DesignMenus y DesignWindows. Si lo haces te saltará ese maldito error con la unit "proxies".

Ten en cuenta que dichas unidades, aparte de ser las que utilizará el IDE de Delphi para "conocer" tus componentes, son las que se enlazarán a cualquier ejecutable que los utilice, por lo que no pueden aludir a nada que tenga que ver con el diseño (por el asunto del Copyright que te comenté en mi anteriro post).

La clave está en crear una unit dedicada exclusivamente a implementar los editores de propiedades/componentes (MisComposReg.pas), ahí SI metes en la cláusula Uses las unidades referidas de diseño: DesignIntf, DesignEditors, DesignMenus y DesignWindows (no todas son necesarias, usa las que te hagan falta). Aparte, como es lógico, debes incluir en esta unidad referencias a las unidades donde has implementado los componentes. El procedimiento Register, donde registras los componentes y los editores, DEBE IR SÓLO EN ESTA UNIDAD.

Vayamos con los paquetes:

Esencialmente sólo necesitas crear uno, el de diseño (el de ejecución sólo te hará falta si quieres que los programas que utilicen tus componentes lo hagan mediante la opción Runtimes packages, ahí si necesitas crear un paquete de ejecución para distribuir con tu aplicación).

En cuanto al paquete de diseño, sólo tienes que añadirle en la cláusula REQUIRES la referencia al paquete designide.dcp que viene con Delphi, y basta con que le añadas solamente la unidad MisComposReg.pas donde se registran los componentes y los editores. Ninguna unidad más. Éste es el paquete que instalas en Delphi. El archivo que debes añadir es el .pas, ya que Delphi debe compilarlo desde ese paquete precisamente (nada de .dcu).

Y referente a lo de crear una unit "proxies.pas" para engañar al sistema, olvídate, simplemente quita las famosas units DesignXXX de todas las unidades menos de MisComposReg.pas, y no te saltará ese error.

Saludos,

Andrés
__________________
Guía de Estilo
Responder Con Cita
  #2  
Antiguo 10-02-2011
Avatar de burgosrodas
burgosrodas burgosrodas is offline
Miembro
 
Registrado: sep 2008
Ubicación: Colombia
Posts: 24
Poder: 0
burgosrodas Va por buen camino
Error al Crear componente Visual

Buen dia
he leido el hilo completamente y es muy interesante pero me he encontrado con un problema que quisiera alguien me pudiera colaborar.
quiero crear mi componente de la siguiente manera:

quiero crear un DBGrid que al soltarlo en mi form (o en un panel)
el automaticamente cambie su parent a un panel que se crea dinamicamente
y dicho panel dinamico se ubica donde se pretendia tener el DBGrid, esto con el fin de agregar un statusbar, y un buscador automatico para dicho DBgrid alineados alBottom, entonces se crea el efecto de tener un buscador en cada DBGrid que adiciono a mi proyecto.
esto no tiene problema, pues en tiempo de diseño, todo pinta bien, el problema aparece cuando intento ejecutar mi componente, pues sale el error
"raised exception class EClassNotFound with message 'Class TPanel not found."




Código Delphi [-]
constructor TKDBGrid.Create(AOwner : TComponent);
begin
     inherited Create(AOwner);
                                                
        Panel:=TPanel.Create(AOwner);
        Panel.Parent:=TWinControl(AOwner);

        Self.Parent:=Panel;  // self es el DBGrid en mi caso JvDBUltimGrid
        Self.Align:=alClient;  // el DBGrid ocupa todo el panel creado

        CrearBuscador;
end;


no en tiendo como hacer, por ultimas intente hacerlo al revez
hago que mi componente sea un panel, y cualdo se crea instancia un DBGrid dentro de el, pero ahroa el problema es que no encuentra la clase TDBGrid >=(
alguien que me guie por favor
espero haberme hecho entender
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
No veo, en tiempo de diseño los nombres de los componentes QuarkBcn Varios 3 19-12-2007 09:38:31
eventos en tiempo de diseño jar OOP 0 27-01-2007 22:09:11
Indices En Tiempo De Diseño?? amadis Conexión con bases de datos 0 12-04-2006 20:22:01
Diseño en tiempo de ejecucion Nelson Alberto Impresión 2 26-01-2006 09:34:12
Instalar componentes solo en tiempo de diseño DarKraZY Varios 0 19-08-2003 16:47:37


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


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