Вопрос

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

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

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

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

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

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

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

<Ч>

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top