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

Материал из DRKB

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

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

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

 uses DsgnIntf;

на

 uses DesignIntf, DesignEditors;

2) Затем Добавить

 DesignIde.dcp

в лист требуемых модулей

Переименование модулей не решит проблемы '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-пакета.


Author: Юрий Зотов
Source: http://www.delphifaq.com
ID: 00058