procedure CreateReport(const MasterData: TDataSet; const ReportFielName: string; const n: integer);
var
  PrintReport: TFrReport;
  ReportDataSet: TfrDBDataSet;
  ReportDesigner: TfrDesigner;
  path: string;
begin  PrintReport := TFrReport.Create(Application);
  ReportDesigner := TfrDesigner.create(Application);
  ReportDataSet := TfrDBDataSet.Create(Application);
  try
    PrintReport.Title := '数据报表';
    ReportDataSet.DataSet := MasterData;
    PrintReport.Dataset := ReportDataSet;
    path := ExtractFilePath(application.ExeName) + 'reports\';
    if not DirectoryExists(path) then
      CreateDir(path);
    if not FileExists(path + ReportFielName) then
    begin
      PrintReport.Pages.Add;
      PrintReport.SaveToFile(path + ReportFielName);
    end;    PrintReport.LoadFromFile(path + ReportFielName);
    case n of
      1: //打印
        PrintReport.PrintPreparedReportDlg;
      2: //预览
        PrintReport.ShowReport;
      3: //修改
        PrintReport.DesignReport;
    end;
  finally
    PrintReport.Free;
    ReportDataSet.Free;
    ReportDesigner.Free;
  end;以上是我根据fastreport动态生成报表的代码
有一个问题是在预览的时候(PrintReport.ShowReport),
打印前设置页面也横向打印的时候,打印出来的始终是纵向,只有通过修改(PrintReport.DesignReport)
设置打印方向为横向,下次预览时才是横向,以上代码需要怎么优化?????
谢谢

解决方案 »

  1.   

    for i := 0 to PrintReport.Pages.Count - 1 do
      begin
        if 横向 then
          PrintReport.Pages[i].ChangePaper(纸张类型,自定义则=256, Width, Height, -1, poLandscape)
        else
          PrintReport.Pages[i].ChangePaper(PageType, Width, Height, -1, poPortrait);
        //Landscape --横向打印,Portrait -- 纵向打印
      end;
      

  2.   

    if 横向 then横向的属性要怎么写:PrintReport.?