Designreportinpanel: Функция Preview в дизайнере работает со второго раза!
Коллеги, доброго дня.
Собственно проблема такая: если в дизайнер работающем в embedded -режиме загрузить существующий макет и нажать в дизайнере кнопку Preview, то при первом вызове содержимое MasterData-датабэндов будут выведены пустыми.
При втором и последующих вызовах -все ОК.
Функция Preview выводит в модальное окно которое по-умолчанию.
При этом список доступных дизайнеру датасетов - изначально виден и корректен.
Пробовал менять местами местами загрузку макета из потока и создание входных TfrxDBDataset - не помогает.
Пробовал список входных TfrxDBDataset до вызова DesignReportInPanel принудительно открывать - не помогает.
Пробовал до вызова DesignReportInPanel делать PrepareReport - не помогает.
Мой прошлый продукт (использующий дизайнер в модальном режиме) - такой проблемы не имел.
Такое ощущение, что первый вызов функции Preview подготавливает датасеты к работе поэтому на втором вызове уже все ок.
Причем есть ньюанс, если макет отчета не был загружен из потока - а был набран с нуля: то такой проблемы не выявляется.
Прошу помочь.
Собственно проблема такая: если в дизайнер работающем в embedded -режиме загрузить существующий макет и нажать в дизайнере кнопку Preview, то при первом вызове содержимое MasterData-датабэндов будут выведены пустыми.
При втором и последующих вызовах -все ОК.
Функция Preview выводит в модальное окно которое по-умолчанию.
При этом список доступных дизайнеру датасетов - изначально виден и корректен.
Пробовал менять местами местами загрузку макета из потока и создание входных TfrxDBDataset - не помогает.
Пробовал список входных TfrxDBDataset до вызова DesignReportInPanel принудительно открывать - не помогает.
Пробовал до вызова DesignReportInPanel делать PrepareReport - не помогает.
Мой прошлый продукт (использующий дизайнер в модальном режиме) - такой проблемы не имел.
Такое ощущение, что первый вызов функции Preview подготавливает датасеты к работе поэтому на втором вызове уже все ок.
Причем есть ньюанс, если макет отчета не был загружен из потока - а был набран с нуля: то такой проблемы не выявляется.
Прошу помочь.
Комментарии
Дизайнер+Создать
3) Бросьте бэнд MasterData, добавьте поле Dataset1.F1 в него
4) Нажмите кнопку Preview. Откроется отчет с тремя именами. Можно нажимать сколько угодно, все ОК
5) Выгрузите приложение и запустите вновь
6) Нажмите кнопку Дизайнер+Открыть
7) Откроется макет где уже есть бенд MasterData вместе с добавленным полем
8) Нажмите кнопку Preview. Откроется отчет с тремя именами. После закрытия окна Preview макет потеряется!!
9) Выгрузите приложение и запустите вновь
10) Нажмите кнопку Дизайнер+Открыть2 и перейдите на вкладку с дизайнером
11) Откроется макет где уже есть бенд MasterData вместе с добавленным полем
12) Нажмите кнопку Preview. Откроется пустой отчет. Нажмите повторно Preview, откроется отчет с тремя именами.
В ходе этих экспериментов видно, что DesignReportInPanel очень чуствителен к тому откуда его вызывают. Из FormShow он ведет себя одним образом, из обработчиков TAction -по другому. Когда-то можно применять ReloadPages, а когда-то нет -летят AV.
Прошу привести пример безопасного применения DesignReportInPanel в контексте загрузки датасетов в него и загрузки макета так чтобы ничего не глючило и работало Preview! Пример прошу дать внутри обработчика кнопки (по аналогии).
Спасибо.