Проблема использования компонентов в D6/7 от предыдущих версий

Previous  Top  Next

    
 

 

 

Решение в случае ошибок компиляции пакетов типа: Missing unit 'Proxies.pas' и Missing DsgnIntf.pas

 

1) Сначала заменить

uses DsgnIntf;

на

uses DesignIntf, DesignEditors;

 

2) Затем

Добавить DesignIde.dcp в лист требуемых модулей

 

©Drkb::00057

Взято с сайта http://www.delphifaq.com

 


Переименование модулей не решит проблемы 'Proxies.pas' Эта проблема возкает из-за того, что сами компоненты и редакторы свойств помещают в один пакет.
 
Это нехорошо, но в D5 и ниже проходило, а начиная с D6 уже не проходит.
 
Пакет разбиваете на два: run-time и design-time.
 
RT-пакет содержит ТОЛЬКО код самих компонентов и больше НИЧЕГО. Ни один его модуль не должен ссылаться в uses ни на один модуль DT-пакета. В его секции Requires могут содержаться ТОЛЬКО run-time модули VCL.
 
Компилируется RT-пакет в любой каталог, доступный через пути поиска IDE, либо через переменную системного окружения Path. Инсталлировать в IDE его не нужно.
 
DT-пакет содержит процедуру Register, иконки компонентов и все design-time редакторы (свойств и компонентов), если такие есть. Любой его модуль может ссылаться в uses на любой модуль из RT-пакета. В его секцию Requires и подключается DesignIDE.dcp. Компилируется он куда угодно и должен инсталлироваться в IDE.
 
Таким образом, в конечные приложения будут подключаться только модули RT-пакета, в которых нет ссылок на DesignEditors - а тогда не потребуется и Proxies. Кроме того, в конечный проект не будут подтягиваться ненужные в run-time код и ресурсы из DT-пакета.
 
Отвечал Юрий Зотов

©Drkb::00058