Ver Mensaje Individual
  #12  
Antiguo 12-04-2010
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Reputación: 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