2012-04-24 10 views
5

Pracuję nad komponentem w Delphi 7 i Delphi 2006, w którym używam jednostki, którą muszę dodać do pliku projektu, w którym komponent jest upuszczany automatycznie. jak sposób Eureka Zaloguj automatycznie dodaje jednostkę „ExceptionLog” do pliku projektu:Dodawanie jednostki automatycznie do projektu

enter image description here

Czy ktoś może mi powiedzieć jak programowo dodać jednostkę do pliku projektu, kiedy spadnie mój komponent na dowolnej formie w projekt?

+2

Myślę, że jednostki źródłowe są dodawane automatycznie we wszystkich przypadkach. Z pewnością tylko wtedy, gdy są znane, kiedy zostały już włączone do ścieżek Delphi (co jest konsekwencją). – TLama

+2

@ Tlama, jednostki składowe są automatycznie dodawane do jednostki * formy * lub * modułu danych *. Nie są automatycznie dodawane do * projektu *. To jest coś wyjątkowego Eureka Log dla siebie. –

+0

@Rob, to kolejne pytanie, które źle odczytałem. Będę musiał zwrócić większą uwagę. Dzięki! – TLama

Odpowiedz

6

Najprawdopodobniej do tego celu należy użyć interfejsu Open Tools API.

także może wymagać, aby napisać TSelectionEditor dla komponentu do wyzwolenia dodanie jednostki (chciałbym spróbować metody RequiresUnit).

Chociaż istnieje prosty sposób dodania jednostki do aktywnego projektu (kod poniżej), to działa tylko dla aktywnego projektu, który może nie być projektem, do którego należy formularz, do którego dodaje się komponent. Dodaje także jednostkę na końcu klauzuli uses.

uses 
    ToolsAPI; 

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

Można sprawdzić GExperts source code ponieważ zawiera klasę (TUsesManager), które można analizować i modyfikować jednostki klauzuli zastosowań.

+0

Oczekuję, że 'AddFile' doda element taki jak' używa MyUnit w 'MyUnit.pas'', który nie byłby odpowiedni dla komponentu biblioteki. Komponent powinien dodać tylko odwołanie do jednostki, a nie odwołanie do pliku, jak pokazano na rysunku w pytaniu. –

+0

@Rob Robi tak, jak mówisz. Był to tylko przykład pokazujący, że OTA może to zrobić. Ale nie znalazłem odpowiedniej metody. Dlatego wspomniałem źródło GExpert. –

+0

+1: Wspominanie o TUsesManager – menjaraz

0

Nieparzysty.

Kiedyś ustawiałem domyślną wartość dpr, aby zawierało prawie nic, ponieważ mój zestaw narzędzi był bardzo pusty. Więc jeśli był w moim przyborniku, to był w dpr - z czym masz problemy - normalnie, jeśli jest w przyborniku, jest już w dpr.

+0

to znaczy, mój komponent potrzebuje 'jednostki' w' dpr', i nie mogę prosić/przekazywać na 'użytkownika', żeby to tam umieścić ... więc muszę zautomatyzować ten sam – PresleyDias

+0

Bez mojej kopii delphi pod ręką, możesz oczywiście ustawić warunek w jednostce, którą powinieneś dodać w dpr, a jeśli jej nie ma dla innych jednostek, które zostaną dodane do pliku .pas - wyślij błąd kompilacji z "Proszę dodać jednostkę x do pliku dpr ".. – BugFinder

0

Przejdź do projektu> Eurekalog Opcje i wyłącz Eurekalog.

+5

Myślę, że nie dostałeś mojego pytania, mam na myśli, że jak eureka log dodaje' ExceptionLog' do 'dpr'. jak zrobić to samo – PresleyDias

Powiązane problemy