2012-04-24 20 views
5

Sto lavorando a un componente in Delphi 7 e Delphi 2006, dove sto utilizzando un'unità che devo aggiungere al file del progetto su cui il componente viene rilasciato automaticamente. Come il modo in Eureka Log aggiunge automaticamente l'unità 'ExceptionLog' per il file di progetto:Aggiunta di un'unità automaticamente al progetto

enter image description here

Qualcuno può dirmi come aggiungere un'unità per il file di progetto quando ho cadere il mio componente qualsiasi forma in il progetto?

+2

Penso che le unità di origine vengano aggiunte automaticamente in tutti i casi. Sicuramente solo quando sono conosciuti, quando sono già stati inclusi nei percorsi Delphi (che cosa è conseguente). – TLama

+2

@Tlama, le unità componente vengono aggiunte automaticamente all'unità * modulo * o * modulo dati *. Non vengono automaticamente aggiunti al * progetto *. È qualcosa di speciale Eureka Log fa per sé. –

+0

@Rob, è la prossima domanda che ho letto male. Dovrò prestare più attenzione. Grazie! – TLama

risposta

6

Probabilmente è necessario utilizzare l'API Open Tools per questo.

Inoltre potrebbe essere necessario scrivere un TSelectionEditor per il componente per attivare l'aggiunta dell'unità (vorrei provare il metodo RequiresUnit).

Mentre c'è un modo semplice per aggiungere un'unità al progetto attivo (codice di seguito), questo funziona solo per il progetto attivo che potrebbe non essere il progetto a cui il modulo appartiene per aggiungere il componente. Inoltre aggiunge l'unità alla fine della clausola degli usi.

uses 
    ToolsAPI; 

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

È possibile controllare il GExperts source code perché contiene una classe (TUsesManager) in grado di analizzare le unità e modificare la clausola di usi.

+0

Mi aspetto che 'AddFile' possa aggiungere un elemento come 'usa MyUnit in' MyUnit.pas'', che non sarebbe appropriato per un componente della libreria. Il componente dovrebbe aggiungere solo un riferimento di unità, non un riferimento di file, come mostrato nell'immagine nella domanda. –

+0

@Rob Fa come dici tu. Era solo un esempio per dimostrare che OTA potrebbe essere in grado di farlo. Ma non ho trovato un metodo appropriato. Ecco perché ho citato la fonte di GExperts. –

+0

+1: per menzionare TUsesManager – menjaraz

0

Dispari.

Ho usato per impostare il mio dpr predefinito per contenere quasi nulla, di conseguenza la mia casella degli strumenti era molto vuota. Quindi se era nella mia cassetta degli attrezzi era nel dpr - con cosa stai avendo problemi - normalmente se è nella casella degli strumenti, è già nel dpr.

+0

Voglio dire, il mio componente ha bisogno di un 'unit' nel' dpr', e non posso chiedere/relay sul 'user' per metterlo lì..so ho bisogno di automatizzare lo stesso – PresleyDias

+0

Senza la mia copia del delphi a portata di mano, potresti ovviamente impostare una condizione nell'unità che dovresti aggiungere al dpr, e se non è lì per le altre unità che verrebbero aggiunte al file .pas - lancia un errore di compilazione con "Per favore aggiungi l'unità x al file dpr ".. – BugFinder

0

vai Progetto> Eurekalog Opzioni e disattiva Eurekalog.

+5

penso che tu non abbia ottenuto la mia domanda, voglio dire come log di eureka aggiunge' ExceptionLog' al 'dpr'. come fare lo stesso – PresleyDias