procedure TFBaseReport.fitnice;
var
i: Integer;
begin
  for i := Screen.FormCount - 1 downto 0 do
  begin
    with Screen.Forms[i] do
    begin
      if ClassName = 'TQRStandardPreview' then
      begin
        if qkReport.Page.Orientation = poPortrait then
        begin
          TQRStandardPreview(TComponent(Screen.Forms[i])).Zoom100.Down := true;
          TQRStandardPreview(TComponent(Screen.Forms[i])).ZoomToWidth.Down := false;
          TQRStandardPreview(TComponent(Screen.Forms[i])).ZoomFit.Down := false;
          TQRStandardPreview(TComponent(Screen.Forms[i])).Zoom100.Click;
        end else
        begin
          TQRStandardPreview(TComponent(Screen.Forms[i])).ZoomFit.Down := true;
          TQRStandardPreview(TComponent(Screen.Forms[i])).Zoom100.Down := false;
          TQRStandardPreview(TComponent(Screen.Forms[i])).ZoomToWidth.Down := false;
          TQRStandardPreview(TComponent(Screen.Forms[i])).ZoomFit.Click;
        end;
      end;
    end;
  end;
end;procedure TFBaseReport.qkReportEndPage(Sender: TCustomQuickRep);
begin
  fitnice;
end;
我查了几个国外网站都说要改QReport的源代码或者自己做Preview难道真的没有别的办法了吗?

解决方案 »

  1.   

    用quickreport,还用写代码吗?我一直是直接用的(d7)
      

  2.   

    先 uses qrprntr,qrprev;定义一个类:
    type TMyPreviewInterface = class(TQRStandardPreviewInterface)
      public
      procedure OnPageAvailable(Sender: TObject;pageno:integer);
      function Show(AQRPrinter : TQRPrinter) : TWinControl; override;
      function ShowModal(AQRPrinter : TQRPrinter): TWinControl; override;
      end;
    procedure TMyPreviewInterface.OnPageAvailable(Sender: TObject;pageno:integer);
    begin
    TQrPreView(Sender).Zoom:=100;
    end;function TMyPreviewInterface.Show(AQRPrinter: TQRPrinter): TWinControl;
    begin
    result:=TQRStandardPreview(inherited Show(AQRPrinter));
    TQRStandardPreview(result).Zoom100.Down:=true;
    TQRStandardPreview(result).QRPreview.OnPageAvailable:=OnPageAvailable;
    end;function TMyPreviewInterface.ShowModal(
    AQRPrinter: TQRPrinter): TWinControl;
    begin
    result:=TQRStandardPreview(inherited ShowModal(AQRPrinter));
    TQRStandardPreview(result).Zoom100.Down:=true;
    TQRStandardPreview(result).QRPreview.OnPageAvailable:=OnPageAvailable;
    end;
    你显示preview,这样:procedure TForm1.Button1Click(Sender: TObject);
    begin
    RegisterPreviewClass(TMyPreviewInterface); //这一行要加
    QuickRep1.Preview;
    end;