Наследование кадров и дубликаты файлов в пакетах

Я разрабатывал ряд компонентов с использованием TFrames и ModelMaker - я нашел сочетание визуального дизайна / разработки + наследования + ModelMaker очень привлекательным. Затем я регистрирую этих потомков TFrame с единицей регистрации, и они становятся оттуда полноценными компонентами на основе палитры. Я использую Delphi 2007.

В начале моего знакомства с небольшими "затруднениями" этого процесса я обнаружил, что ряд проблем, с которыми я столкнусь с неправильной потоковой передачей потомков TFrame (часто появляющейся как формы в IDE, а не в фреймах), можно полностью устранить, введя мой собственный класс "TBaseFrame", который наследуется от TFrame без изменений, а затем использует THAT в качестве базового класса для разработки компонентов (добавление методов, свойств и т. д.). Если бы я добавил свойства и методы и т. Д. В класс / фрейм, наследуемый непосредственно от TFrame, потоковая передача файла dfm часто приводила бы к путанице.

Итак, в целом все работает отлично, как только я разобрался с изломами.

Вчера, однако, я столкнулся с новой проблемой:

Я устанавливаю полученные компоненты в наборах пакетов, сгруппированных способами, которые имеют смысл (т.е. все "панели" для Приложения 1 находятся в одном пакете, несколько "зрителей" для Приложения 2 находятся в другом и т. Д.).

Если класс TBaseFrame не включен в пакет, наследующий компонент-потомок TFrame не будет загружаться в IDE. НО, если я добавляю TBaseFrame в пакет, я сталкиваюсь с конфликтом, который сообщает Delphi, когда у него один и тот же исходный файл PAS в нескольких пакетах.

Я мог бы поместить ВСЕ мои компоненты на базе frame= в один гигантский пакет, но я бы действительно, действительно предпочел бы этого не делать, так как я ясно вижу, что со временем он станет слишком большим / из-под контроля, учитывая природу того, сколько наборов Я планирую развиваться. Есть ли другой способ разрешить этот конфликт?


Обновление - есть хитрость, чтобы заставить это работать "должным образом" - обязательно прочитайте комментарии ниже.

1 ответ

Решение

Вы пытались поместить ваш TBaseFrame в один отдельный пакет, который будет "необходим" для всех других пакетов?

Другие вопросы по тегам