Убедитесь, что ваш DPK
определяет символ по вашему выбору, например DESIGNTIME
. Тогда вы сможете использовать что-то подобное, чтобы включать единицы времени разработки только при необходимости:
uses Windows, Whatever, Something
{$IFDEF DESIGNTIME}
,DesignIntf
{$ENDIF}
;
Тогда к тому же в вашем конструкторе код:
constructor TMyClass.Create(aOwner:TComponent);override;
begin
inherited;
{$IFDEF DESIGNTIME}
// I'm at design time.
{$ENDIF}
end;
При использовании этого метода вы должны либо использовать отдельный каталог DCU
для вашего pacakge и вашего обычного исполняемого файла, либо делать build
каждый раз, когда вы переключаетесь с пакета времени разработки на другие проекты. Это потому, что Delphi будет перестраивать DCU
, только если PAS
изменился, тогда как в этом случае PAS
не рассказывает всей истории, определенные символы также имеют значение. Если у вас есть DCU
на диске, который был скомпилирован Delphi, когда вы строили свой проектный проект, вы можете увидеть ToolsApi.DCU not found
при попытке скомпилировать обычный проект. Перестройка перекомпилирует DCU и заставляет сообщение исчезнуть. Точно так же, если вы перекомпилируете (а не пересобираете) проект во время разработки после того, как вы построили обычный проект, ваш DCU может застрять в состоянии, отличном от DESIGNTIME, оставив вас без особого поведения во время разработки.