библиотек, которые неплохо было бы закинуть в bpl. Насчёт наследования, как я понял, есть свой расширенный наследник TFrame. А что мешает вытащить весь функционал по этому фрейму в отдельный модуль и там всё отрабатывать, передавая экземпляры фреймов ? Если подумать, ЧТО из этого наследника TFrame, какие данные и события отделить, сделать это можно и без наследования. Я так делал обвязку для ряда форм, работает много лет. Кстати, контролы также расширял дополнительными данными и поведением, но там следует создание и удаление этих контролов отслеживать, ибо сам контрол должен понимать, что он расширенный и подчищать. На каком этапе работа с BPL ? У меня на уровне понимания необходимости, не работал с bpl-ями, а у тебя ? Вопрос к ALL : какие подводные камни в идее - перенести ряд юнитов в bpl и кидать разрабам вместо некоторых модулей - bpl ? код из него есть шанс вытащить?
Код вытащить нельзя
Ну я вот применяю их уже пару лет в достаточно больших проектах, где нужна модульность... Например я сделал 2D-рендерер и скомпилил его в скажем ebgine.bpl... В global_app.pas этой bpl-ки определил глобальные переменные - которым присваиваю создаваемые экземпляры объектов. Теперь я подключаю этот пакет к exe. Ему виден этот рендерер. Создаю dll-ки плагины, подключаю к ним помимо rtl, vcl свой engine.bpl - теперь объекты из global_app.pas доступны и этим dll-кам - они могут манипулировать рендерером... А уже экзешник менеджерит эти плагины индексируя их инициализируя выгружая и т. д... И у нас в приложении общий менеджер памяти общий Application, Screen и т. д - никаких конфликтов... Единственнный недостаток (или преимущество) - всё собирать надо в одной версии Delphi и таскать с собой rtl.bpl, vcl.bpl. Ну или вот у вас есть форма приложения и плагины должны внедряться в её меню, создавать тулбары на этой форме - определяем в общем пакете переменную HostForm:TForm; HostMenu:TMenu... Когда exe создаст форму он может сделать присвоение этим переменным главной формы и меню свои, затем индексировать плагины - плагинам будет известна главная форма, или панель тулбара из global_app.pas, и меню основной формы, чтобы там насовать своих итемов... Как-то так!
Так вот не хочется фреймы засовывать в классы контейнеры, тогда фреймам потребуется вытаскивать класс-контейнер-родитель, чтобы взаимодействовать с приложением... Определять все обработчики событий во фрейме, а если нужны новые - то дописывать их...
Обсуждают сегодня