Наследование кадров и дубликаты файлов в пакетах - PullRequest
2 голосов
/ 24 июня 2009

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

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

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

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

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

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

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


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

1 Ответ

3 голосов
/ 24 июня 2009

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

...