2012-04-24 9 views
5

Estoy trabajando en un componente en Delphi 7 y , donde estoy usando una unidad que necesito agregar al archivo del proyecto en el cual el componente se quita automáticamente. Al igual que la forma en Eureka Entrar añade automáticamente la unidad ExceptionLog 'al archivo de proyecto:Agregando una unidad automáticamente al proyecto

enter image description here

Puede alguien decirme cómo agregar mediante programación una unidad para el archivo de proyecto cuando se me cae la componente de cualquier formulario ¿el proyecto?

+2

Creo que las unidades fuente se agregan automáticamente en todos los casos. Seguramente solo cuando se conocen, cuando ya se han incluido en las rutas Delphi (lo que es consecuente). – TLama

+2

@Tlama, las unidades componentes se agregan automáticamente a la unidad * formulario * o * módulo de datos *. No se agregan automáticamente al * proyecto *. Eso es algo especial que Eureka Log hace por sí mismo. –

+0

@Rob, es la siguiente pregunta que he leído mal. Tendré que prestar más atención. ¡Gracias! – TLama

Respuesta

6

Lo más probable es que tenga que usar la API de Herramientas abiertas para eso.

También puede ser necesario escribir un TSelectionEditor para su componente para activar la adición de la unidad (probaría el método RequiresUnit).

Si bien hay una forma sencilla de agregar una unidad al proyecto activo (código a continuación), esto solo funciona para el proyecto activo que podría no ser el proyecto al que le está agregando el componente. También agrega la unidad al final de la cláusula uses.

uses 
    ToolsAPI; 

var 
    currentProject: IOTAProject; 
begin 
    currentProject := GetActiveProject(); 
    currentProject.AddFile('MyUnit.pas', True); 

Puede comprobar el GExperts source code, ya que contiene una clase (TUsesManager) que puede analizar las unidades y modificar la cláusula de usos.

+0

Espero que 'AddFile' agregue un elemento como' usa MyUnit en 'MyUnit.pas'', que no sería apropiado para un componente de biblioteca. El componente debe agregar solo una referencia de unidad, no una referencia de archivo, como se muestra en la imagen de la pregunta. –

+0

@Rob Hace lo que dices. Fue solo un ejemplo para demostrar que la OTA puede hacerlo. Pero no encontré un método apropiado. Es por eso que mencioné la fuente de GExperts. –

+0

+1: ¿Por mencionar TUsesManager – menjaraz

0

Impar.

Solía ​​configurar mi dpr predeterminado para contener casi nada, como resultado mi caja de herramientas estaba muy vacía. Entonces, si estaba en mi caja de herramientas, estaba en el dpr, ¿con qué estás teniendo problemas? Normalmente, si está en la caja de herramientas, ya está en el dpr.

+0

quiero decir, mi componente necesita una 'unidad' en' dpr', y no puedo pedir/transmitir al 'usuario' para ponerlo allí ... así que necesito automatizar el mismo – PresleyDias

+0

Sin mi copia de Delphi a mano, por supuesto, puede establecer una condición en la unidad que debe agregar en el dpr, y si no está allí para las otras unidades que se agregarán al archivo .pas - genere un error de compilación con "Por favor agregue la unidad x al archivo dpr ".. – BugFinder

0

ve Proyecto> Eurekalog Opciones y deshabilita Eurekalog.

+5

Creo que no has recibido mi pregunta, me refiero a que eureka log agrega' ExceptionLog' al 'dpr'. cómo hacer lo mismo – PresleyDias

Cuestiones relacionadas