Проблема использования компонентов в 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