Динамическое создание Tfrxxx в собственном классе

отредактировано 08:52 Раздел: FastReport 2.xx VCL
Вкратце, суть задачи:
Есть класс, унаследованный от TComponent.
Я создаю в конструкторе этого класса TfrReport и всю инфраструктуру, указывая экземпляр класса в качестве Owner.
Все создается и отрабатывает замечательно, пока не требуется указать источник данных для бэнда.
В списке источников остается только "нет" и "Virtual", хотя TfrDataset мной создается и настраивается.
Более того, если положить TfrDataset на форму, а при создании экземпляра класса указать форму как Owner, то TfrDataset появится в этом списке!
Я могу лишь предположить, что движок FR при поиске потенциальных источников идет вверх по иерархии владельцев, пока не найдет потомка TForm, и ищет свои TfrDataset уже среди его компонентов.

Как можно разрешить эту ситуацию, если вытаскивать TfrDataset из класса наружу крайне нежелательно?
Потребуется ли модифицировать код FreeReport, или же можно обойтись без кардинальных мер?

выдержка из кода конструктора класса - создание компонентов
//создаем основные компоненты
Query = new TADOQuery(this);//запрос к БД
QSource = new TDataSource(this);//посредник
ReportDataset = new TfrDBDataSet(this);//источник данных отчета
Report = new TfrReport(this);//отчет
//настройка "пищевой цепочки"
Query->Connection = Conn; //TADOConnection* Conn передается в параметрах конструктора
QSource->DataSet = Query; //работаем через посредника
ReportDataset->DataSource = QSource;
Report->Dataset = ReportDataset; //устанавливаем источник
//далее идет создание вспомогательных компонент - TfrXXXXObject

Комментарии

  • отредактировано 08:52
    Поскольку ответов получено не было, переписал код, засунул функционал класса в форму.

    Topic closed.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.