2012-04-24 3 views
5

Я работаю над компонентом в Delphi 7 и Delphi 2006, где я использую блок, который мне нужно добавить в файл проекта, по которому компонент автоматически отбрасывается. Как способ Eureka Log автоматически добавляет блок «ExceptionLog» в файле проекта:Автоматическое добавление устройства в проект

enter image description here

Может кто-нибудь сказать мне, как программно добавить блок в файл проекта, когда я бросаю свой компонент в любой форме проект?

+2

Я думаю, что исходные блоки автоматически добавляются во всех случаях. Разумеется, только когда они известны, когда они уже были включены в пути Дельфы (что является следствием). – TLama

+2

@Tlama, компонентные единицы автоматически добавляются к модулю * формы * или * модуля данных *. Они не добавляются автоматически в * проект *. Это что-то особенное Eureka Log делает для себя. –

+0

@Rob, это следующий вопрос, который я неправильно понял. Я должен буду уделять больше внимания. Благодаря! – TLama

ответ

6

Для этого вам, скорее всего, придется использовать API открытых инструментов.

Также может потребоваться написать TSelectionEditor для вашего компонента, чтобы вызвать добавление устройства (я бы попробовал метод RequiresUnit).

Хотя есть простой способ просто добавить блок в активный проект (код ниже), это работает только для активного проекта, который может быть не проектом, к которому принадлежит форма, добавляет компонент. Также он добавляет блок в конце предложения uses.

uses 
    ToolsAPI; 

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

Вы можете проверить GExperts source code, потому что он содержит класс (TUsesManager), который может анализировать единицы и изменять положение польз.

+0

Я ожидаю, что 'AddFile' добавит элемент вроде' myUnit 'в MyUnit.pas'', который не подходит для компонента библиотеки. Компонент должен добавить только ссылку на единицу, а не ссылку на файл, как показано на картинке в вопросе. –

+0

@Rob Он делает, как вы говорите. Это был просто пример, показывающий, что OTA может это сделать. Но я не нашел подходящего метода. Вот почему я упомянул источник GExperts. –

+0

+1: Для упоминания TUsesManager – menjaraz

0

Нечетные.

Я использовал, чтобы установить значение по умолчанию для dpr, чтобы содержать почти ничего, в результате моя панель инструментов была очень пуста. Так что, если это было в моей панели инструментов, это было в dpr - с чем вы сталкиваетесь - обычно, если это в панели инструментов, то это уже в dpr.

+0

Я имею в виду, что мой компонент нуждается в 'unit' в' dpr', и я не могу спросить/ретранслировать на 'user', чтобы поместить его там. Так что мне нужно автоматизировать то же самое – PresleyDias

+0

Без моей копии delphi, вы могли бы, конечно, установить условие в блоке, которое вы должны добавить в dpr, и если его нет для других единиц, которые будут добавлены в файл .pas - выбросите ошибку компиляции с помощью «Пожалуйста, добавьте единицу x в файл dpr ".. – BugFinder

0

go Project> Eurekalog Опции и отключить Eurekalog.

+5

Я думаю, вы не получили мой вопрос, я имею в виду, как журнал eureka добавляет' ExceptionLog' в 'dpr'. как сделать то же самое – PresleyDias

Смежные вопросы