Search Results for

    Show / Hide Table of Contents

    Наследование отчетов

    Наследование отчетов было описано в соответствующей главе в "Руководстве пользователя". Здесь мы опишем некоторые ключевые моменты.

    Если вы храните отчеты в файлах, вам нужно указать каталог, в котором FastReport будет искать базовые отчеты. Точнее, это каталог, содержимое которого будет показано в окнах "Файл|Новый..." и "Отчет|Настройки...":

    Для этого используется свойство компонента TfrxDesigner.TemplateDir. По умолчанию оно пустое, FastReport показывает шаблоны в каталоге, где находится исполняемый файл (.exe). В это свойство можно поместить либо абсолютный путь, либо относительный.

    Если вы храните отчеты в базе данных, придется написать немного кода для загрузки базового отчета и для получения списка доступных шаблонов. Для загрузки базового отчета используйте обработчик события TfrxReport.OnLoadTemplate:

    property OnLoadTemplate: TfrxLoadTemplateEvent read FOnLoadTemplate write FOnLoadTemplate;
    TfrxLoadTemplateEvent = procedure(Report: TfrxReport; const TemplateName: String) of object;
    

    Обработчик этого события должен загрузить отчет с именем TemplateName в компонент Report. Вот возможный пример такого обработчика:

    procedure TForm1.LoadTemplate(Report: TfrxReport; const TemplateName: String);
    var
      BlobStream: TStream;
    begin
      ADOTable1.First;
      while not ADOTable1.Eof do
      begin
        if AnsiCompareText(ADOTable1.FieldByName('ReportName').AsString, TemplateName) = 0 then
        begin
          BlobStream := TMemoryStream.Create;
          TBlobField(ADOTable1.FieldByName('ReportBlob')).SaveToStream(BlobStream);
          BlobStream.Position := 0;
          Report.LoadFromStream(BlobStream);
          BlobStream.Free;
          break;
        end;
        ADOTable1.Next;
      end;
    end;
    

    Для получения списка доступных шаблонов (в окнах "Файл|Новый..." и "Отчет|Настройки...") надо использовать обработчик события TfrxDesigner.OnGetTemplateList:

    property OnGetTemplateList: TfrxGetTemplateListEvent read FOnGetTemplateList write FOnGetTemplateList;
    TfrxGetTemplateListEvent = procedure(List: TStrings) of object;
    

    Обработчик этого события должен загрузить список доступных отчетов в параметр List. Вот возможный пример такого обработчика:

    procedure TForm1.GetTemplates(List: TList);
    begin
      List.Clear;
      ADOTable1.First;
      while not ADOTable1.Eof do
      begin
        List.Add(ADOTable1.FieldByName('ReportName').AsString);
        ADOTable1.Next;
      end;
    end;
    

    FastReport может наследовать и уже созданные отчеты, для этого нужно воспользоваться функцией

    TfrxReport.InheritFromTemplate(const templName: String; InheriteMode: TfrxInheriteMode = imDefault): Boolean.
    

    Функция позволяет наследовать текущий загруженный отчет от указанного отчета. Первый параметр функции - путь и имя шаблона предка, второй - параметр позволяет выбрать режим наследования(imDefault - выводить диалог с предложением переименовать/удалить дубликаты, imDelete - удаляь все дублирующиеся объекты, imRename - переименовывать все дублирующиеся объекты).

    Внимание! Поиск шаблона предка осуществляется относительно текущего шаблона, т.е. необходимо соблюдать структуру каталогов в месте хранения отчетов. Fast Report использует относительные пути, поэтому не стоит беспокоиться о переносе приложения (исключением является, когда текущий шаблон и шаблон-предок расположены на разных носителях или используется сетевой путь).

    Back to top © ООО «Быстрые отчеты»