Designreportinpanel: Функция Preview в дизайнере работает со второго раза!

отредактировано November 2015 Раздел: FastReport VCL
Коллеги, доброго дня.

Собственно проблема такая: если в дизайнер работающем в embedded -режиме загрузить существующий макет и нажать в дизайнере кнопку Preview, то при первом вызове содержимое MasterData-датабэндов будут выведены пустыми.
При втором и последующих вызовах -все ОК.
Функция Preview выводит в модальное окно которое по-умолчанию.

При этом список доступных дизайнеру датасетов - изначально виден и корректен.

Пробовал менять местами местами загрузку макета из потока и создание входных TfrxDBDataset - не помогает.
Пробовал список входных TfrxDBDataset до вызова DesignReportInPanel принудительно открывать - не помогает.
Пробовал до вызова DesignReportInPanel делать PrepareReport - не помогает.

Мой прошлый продукт (использующий дизайнер в модальном режиме) - такой проблемы не имел.

Такое ощущение, что первый вызов функции Preview подготавливает датасеты к работе поэтому на втором вызове уже все ок.

Причем есть ньюанс, если макет отчета не был загружен из потока - а был набран с нуля: то такой проблемы не выявляется.

Прошу помочь.

Комментарии

  • отредактировано November 2015
    В дополнение к теме непонятного поведения 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! Пример прошу дать внутри обработчика кнопки (по аналогии).

    Спасибо.
  • gpigpi
    отредактировано 14:21
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Designer: TfrxDesignerForm;
    begin
      frxReport1.EngineOptions.DestroyForms := False;
      frxReport1.Preview := frxPreview1;
      frxReport1.DesignReportInPanel(DesignerSheet);
      CreateDatasets();
      TfrxDesignerForm(frxReport1.Designer).LoadFile('000.fr3', False);
    

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

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