Управление форматами экспорта из кода программы

GdalexGdalex Таганрог
отредактировано 04:27 Раздел: FastReport VCL
Добрый день!
Столкнулся с проблемой организации экспорта из программы на Дельфи. В дизайн-тайм я могу добавить/удалить нужные мне форматы экспорта. Например, pdf или xls.
Но, если на форму добавил "Экспорт в XLS", то он доступен всегда.
Возможно ли как-то в коде определять, для какого отчета и какие наборы экспорта будут доступны в данный момент?
Например, для отчета №1 - только pdf, а для отчета №2 - pdf и xls.

Комментарии

  • отредактировано 04:27
    сделай свою форму Preview
  • Stalker4Stalker4 123
    отредактировано 04:27
    Gdalex написал: »
    Возможно ли как-то в коде определять, для какого отчета и какие наборы экспорта будут доступны в данный момент?
    Например, для отчета №1 - только pdf, а для отчета №2 - pdf и xls.
    Штатно вроде бы нельзя, но можно компоненты экспорта кидать не на форму, а создавать динамически в зависимости от отчета.
  • gpigpi
    отредактировано 04:27
    В модуле frxDsgnIntf есть функция, frxExportFilters(), возвращающая указатель на коллекцию фильтров.
    Можно как зарегистрировать нужные фильтры, так и дерегистрировать:

    frxDsgnIntf.frxExportFilters.Register(frxXLSExport1); // Вызвать необязательно, если компонент создан в дизайн-тайме или конструктором .Create(...)

    frxDsgnIntf.frxExportFilters.UnRegister(frxXLSExport1);

    Учтите, что вызов UnRegister() вызывает деструктор класса компонента экспорта. Т.е, если захотите зарегистрировать фильтр экспорта повторно, создавайте его снова.
    Можно просто для конкретного пользователя создавать только те фильтры экспорта, которые ему нужны или отображать их в контекстном меню
    procedure TForm1.FormClick(Sender: TObject);
    begin
      frxReport1.ShowReport();
    end;
    
    procedure TForm1.frxReport1BeginDoc(Sender: TObject);
    var i: integer;
        P: TPopupMenu;
    begin
      P := TfrxPreviewForm(frxReport1.PreviewForm).ExportPopup;
      for i := 0 to frxExportFilters.Count - 1 do
        P.Items[i].Visible := frxExportFilters[i].Filter = frxXLSExport1;
    end;
    

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

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