⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ppprvdlg.pas

📁 pasa人力资源考勤管理系统
💻 PAS
字号:
{******************************************************************************}
{                                                                              }
{                   ReportBuilder Report Component Library                     }
{                                                                              }
{             Copyright (c) 1996, 2000 Digital Metaphors Corporation           }
{                                                                              }
{******************************************************************************}

unit ppPrvDlg;

interface

{$I ppIfDef.pas}

uses
  Windows, ComCtrls, SysUtils, Messages, Classes, Graphics, Controls, Forms, ExtCtrls, StdCtrls, Mask, Buttons,
  ppForms, ppTypes, ppProd, ppDevice, ppViewr, Dialogs, ppUtils,
  ppBands, ppClass, ppCtrls, ppVar,
  ppPrnabl, ppCache, ppReport, ppComm, ppRelatv, ppDB, ppDBPipe,
  ppDBBDE, scExcelExport;
type

  { TppPrintPreview }
  TppPrintPreview = class(TppCustomPreviewer)
    pnlPreviewBar: TPanel;
    spbPreviewPrint: TSpeedButton;
    Bevel1: TBevel;
    ppViewer1: TppViewer;
    spbAutoSearch: TSpeedButton;
    pnlStandardButtons: TPanel;
    spbPreviewWhole: TSpeedButton;
    spbPreviewFirst: TSpeedButton;
    spbPreviewPrior: TSpeedButton;
    spbPreviewNext: TSpeedButton;
    spbPreviewLast: TSpeedButton;
    spbPreviewWidth: TSpeedButton;
    spbPreview100Percent: TSpeedButton;
    spbPreviewClose: TSpeedButton;
    mskPreviewPage: TMaskEdit;
    mskPreviewPercentage: TMaskEdit;
    SaveDialog1: TSaveDialog;
    saveexcel: TSpeedButton;
    scExcelExport1: TscExcelExport;
    procedure spbPreviewPrintClick(Sender: TObject);
    procedure spbPreviewWholeClick(Sender: TObject);
    procedure spbPreviewFirstClick(Sender: TObject);
    procedure spbPreviewPriorClick(Sender: TObject);
    procedure spbPreviewNextClick(Sender: TObject);
    procedure spbPreviewLastClick(Sender: TObject);
    procedure mskPreviewPageKeyPress(Sender: TObject; var Key: Char);
    procedure ppViewerPageChange(Sender: TObject);
    procedure ppViewerStatusChange(Sender: TObject);
    procedure spbPreviewWidthClick(Sender: TObject);
    procedure spbPreview100PercentClick(Sender: TObject);
    procedure spbPreviewCloseClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure mskPreviewPercentageKeyPress(Sender: TObject; var Key: Char);
    procedure ppViewer1PrintStateChange(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure spbAutoSearchClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure saveexcelClick(Sender: TObject);

  private
    FStatusBar: TStatusBar;

  protected
    function  GetViewer: TObject; override;
    procedure LanguageChanged; override;
    procedure ExportRptFile(Ex_Option,Ext_Filename:String);


  public
    procedure Init; override;

  end; {class, TppPrintPreview}

var
  ppPrintPreview: TppPrintPreview;

implementation

{$R *.DFM}

{------------------------------------------------------------------------------}
{ TppPrintPreview.FormCreate }
procedure TppPrintPreview.ExportRptFile(Ex_Option,Ext_Filename:String);
begin
  if SaveDialog1.Execute then
  begin
    ppViewer1.Report.AllowPrintToFile := True;
    ppViewer1.Report.ShowPrintDialog :=False;
    if AnsiCompareText(ExtractFileExt(SaveDialog1.FileName), Ext_Filename)<0 then
      SaveDialog1.FileName :=SaveDialog1.FileName + Ext_Filename;
    ppViewer1.Report.TextFileName := SaveDialog1.FileName;
    ppViewer1.Report.DeviceType := Ex_Option;
    ppViewer1.Report.Print;
    ppViewer1.Report.ShowPrintDialog :=True;
    ppViewer1.Report.AllowPrintToFile := False;
  end else SaveDialog1.FileName :='';
end;


procedure TppPrintPreview.FormCreate(Sender: TObject);
begin

  FStatusBar := TStatusBar.Create(Self);
  FStatusBar.Parent      := Self;
  FStatusBar.SimplePanel := True;
  FStatusBar.Align       := alBottom;

end; {procedure FormCreate}

{------------------------------------------------------------------------------}
{ TppPrintPreview.FormClose}

procedure TppPrintPreview.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end; {procedure FormClose}

{------------------------------------------------------------------------------}
{ TppPrintPreview.Init }

procedure TppPrintPreview.Init;
begin

  if (Report is TppProducer) then
    ppViewer1.Report := TppProducer(Report);

end; {procedure, Init}

{------------------------------------------------------------------------------}
{ TppPrintPreview.FormShow }

procedure TppPrintPreview.FormShow(Sender: TObject);
begin

  if (Report is TppProducer) then
    spbAutoSearch.Visible := TppProducer(Report).ShowAutoSearchDialog;

  if not(spbAutoSearch.Visible) then
    pnlStandardButtons.Left := spbAutoSearch.Left;

  spbPreviewWhole.Down      := (ppViewer1.ZoomSetting = zsWholePage);
  spbPreviewWidth.Down      := (ppViewer1.ZoomSetting = zsPageWidth);
  spbPreview100Percent.Down := (ppViewer1.ZoomSetting = zs100Percent);

end; {procedure, FormShow}

{------------------------------------------------------------------------------}
{ TppPrintPreview.LanguageChanged}

procedure TppPrintPreview.LanguageChanged;
var
  lBitMap: TBitMap;
begin

  spbAutoSearch.Hint := ppLoadStr(1021);
  spbPreviewPrint.Hint := ppLoadStr(22);
  spbPreviewWhole.Hint := ppLoadStr(30);
  spbPreviewWidth.Hint := ppLoadStr(31);
  spbPreview100Percent.Hint := ppLoadStr(1); {'100 %'}
  spbPreviewFirst.Hint := ppLoadStr(13);
  spbPreviewPrior.Hint := ppLoadStr(29);
  spbPreviewNext.Hint  := ppLoadStr(15);
  spbPreviewLast.Hint  := ppLoadStr(14);
  spbPreviewClose.Caption := ppLoadStr(6); {'Close'}

  lBitMap := TBitMap.Create;
  spbPreviewClose.Width := lBitMap.Canvas.TextWidth(spbPreviewClose.Caption) + 30;
  lBitMap.Free;

  Caption := ppLoadStr(23);

end; {procedure, LanguageChanged}

{------------------------------------------------------------------------------}
{ TppPrintPreview.GetViewer }

function TppPrintPreview.GetViewer: TObject;
begin
  Result := ppViewer1;
end; {function, GetViewer}

{------------------------------------------------------------------------------}
{ TppPrintPreview.ppViewer1PrintStateChange }

procedure TppPrintPreview.ppViewer1PrintStateChange(Sender: TObject);
var
  lPosition: TPoint;
begin

  if ppViewer1.Busy then
    begin
      mskPreviewPercentage.Enabled := False;
      mskPreviewPage.Enabled := False;

      pnlPreviewBar.Cursor := crHourGlass;

      ppViewer1.PaintBox.Cursor := crHourGlass;

      FStatusbar.Cursor := crHourGlass;

      spbPreviewClose.Cursor := crArrow;

      spbPreviewClose.Caption := ppLoadStr(ppMsgCancel);
    end
  else
    begin
      mskPreviewPercentage.Enabled := True;
      mskPreviewPage.Enabled := True;

      pnlPreviewBar.Cursor := crDefault;

      ppViewer1.PaintBox.Cursor := crDefault;

      FStatusbar.Cursor := crDefault;

      spbPreviewClose.Cursor := crDefault;

      spbPreviewClose.Caption := ppLoadStr(6); {'Close'}
    end;

  {this code will force the cursor to update}
  GetCursorPos(lPosition);
  SetCursorPos(lPosition.X, lPosition.Y);

end; {procedure, ppViewer1PrintStateChange}

{------------------------------------------------------------------------------}
{ TppPrintPreview.FormKeyDown}

procedure TppPrintPreview.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  lScrollBar: TControlScrollBar;
begin

  if (ssCtrl in Shift) then
    begin

      case Key of
       VK_PRIOR: ppViewer1.PriorPage;
       VK_NEXT:  ppViewer1.NextPage;
       VK_HOME:  ppViewer1.FirstPage;
       VK_END:   ppViewer1.LastPage;
      end;

    end
  else
    begin

      case Key of
       VK_PRIOR, VK_UP:
         begin
           lScrollBar := ppViewer1.ScrollBox.VertScrollBar;
           lScrollBar.Position := lScrollBar.Position - ppViewer1.ScrollBox.Height;
         end;

       VK_NEXT, VK_DOWN:
         begin
           lScrollBar := ppViewer1.ScrollBox.VertScrollBar;
           lScrollBar.Position := lScrollBar.Position + ppViewer1.ScrollBox.Height;
         end;

       VK_LEFT:
         begin
           lScrollBar := ppViewer1.ScrollBox.HorzScrollBar;
           lScrollBar.Position := lScrollBar.Position - ppViewer1.ScrollBox.Width;
         end;

       VK_RIGHT:
         begin
           lScrollBar := ppViewer1.ScrollBox.HorzScrollBar;
           lScrollBar.Position := lScrollBar.Position + ppViewer1.ScrollBox.Width;
         end;

      end;

    end;

end; {procedure, FormKeyDown}

{------------------------------------------------------------------------------}
{ TppPrintPreview.spbCloseClick }

procedure TppPrintPreview.spbPreviewCloseClick(Sender: TObject);
begin
  if TppProducer(Report).Printing then
    ppViewer1.Cancel
  else
    Close;
end; {procedure, spbCloseClick}

{------------------------------------------------------------------------------}
{ TppPrintPreview.ppViewerStatusChange }

procedure TppPrintPreview.ppViewerStatusChange(Sender: TObject);
begin
  FStatusBar.SimpleText := ppViewer1.Status;
end; {procedure, ppViewerStatusChange}

{------------------------------------------------------------------------------}
{ TppPrintPreview.ppViewerPageChange }

procedure TppPrintPreview.ppViewerPageChange(Sender: TObject);
begin
  mskPreviewPage.Text := IntToStr(ppViewer1.AbsolutePageNo);
  mskPreviewPercentage.Text := IntToStr(ppViewer1.CalculatedZoom);
end; {procedure, ppViewerPageChange}

{------------------------------------------------------------------------------}
{ TppPrintPreview.spbPreviewPrintClick }

procedure TppPrintPreview.spbPreviewPrintClick(Sender: TObject);
begin
  ppViewer1.Print;
end; {procedure, spbPreviewPrintClick}

{------------------------------------------------------------------------------}
{ TppPrintPreview.spbAutoSearchClick}

procedure TppPrintPreview.spbAutoSearchClick(Sender: TObject);
begin
  ppViewer1.DisplayAutoSearchDialog;
end; {procedure, spbAutoSearchClick}

{------------------------------------------------------------------------------}
{ TppPrintPreview.spbPreviewFirstClick}

procedure TppPrintPreview.spbPreviewFirstClick(Sender: TObject);
begin
  ppViewer1.FirstPage;
end; {procedure, spbCloseClick}

{------------------------------------------------------------------------------}
{ TppPrintPreview.spbPreviewPriorClick}

procedure TppPrintPreview.spbPreviewPriorClick(Sender: TObject);
begin
  ppViewer1.PriorPage;
end; {procedure, spbPreviewFirstClick}

{------------------------------------------------------------------------------}
{ TppPrintPreview.spbPreviewNextClick}

procedure TppPrintPreview.spbPreviewNextClick(Sender: TObject);
begin
  ppViewer1.NextPage;
end; {procedure, spbPreviewNextClick}

{------------------------------------------------------------------------------}
{ TppPrintPreview.spbPreviewLastClick}

procedure TppPrintPreview.spbPreviewLastClick(Sender: TObject);
begin
  ppViewer1.LastPage;
end; {procedure, spbPreviewLastClick}

{------------------------------------------------------------------------------}
{ TppPrintPreview.mskPreviewPageKeyPress}

procedure TppPrintPreview.mskPreviewPageKeyPress(Sender: TObject; var Key: Char);
var
  liPage: Longint;
begin

  if (Key = #13) then
    begin
      liPage := StrToInt(mskPreviewPage.Text);

      ppViewer1.GotoPage(liPage);
    end; {if, carriage return pressed}

end; {procedure, mskPreviewPageKeyPress}

{------------------------------------------------------------------------------}
{ TppPrintPreview.spbPreviewZoomClick }

procedure TppPrintPreview.spbPreviewWholeClick(Sender: TObject);
begin
  ppViewer1.ZoomSetting := zsWholePage;

  mskPreviewPercentage.Text := IntToStr(ppViewer1.CalculatedZoom);
end; {procedure, spbPreviewZoomClick}

{------------------------------------------------------------------------------}
{ TppPrintPreview.spbPreviewWidthClick}

procedure TppPrintPreview.spbPreviewWidthClick(Sender: TObject);
begin
  ppViewer1.ZoomSetting := zsPageWidth;

  mskPreviewPercentage.Text := IntToStr(ppViewer1.CalculatedZoom);
end; {procedure, spbPreviewWidthClick}

{------------------------------------------------------------------------------}
{ TppPrintPreview.spbPreview100PercentClick}

procedure TppPrintPreview.spbPreview100PercentClick(Sender: TObject);
begin
  ppViewer1.ZoomSetting := zs100Percent;

  mskPreviewPercentage.Text := IntToStr(ppViewer1.CalculatedZoom);
end; {procedure, spbPreview100PercentClick}

{------------------------------------------------------------------------------}
{ TppPrintPreview.mskPreviewPercentageKeyPress}

procedure TppPrintPreview.mskPreviewPercentageKeyPress(Sender: TObject; var Key: Char);
var
  liPercentage: Integer;
begin
  if (Key = #13) then
    begin
      liPercentage := StrToIntDef(mskPreviewPercentage.Text, 100);

      ppViewer1.ZoomPercentage := liPercentage;

      spbPreviewWhole.Down := False;
      spbPreviewWidth.Down := False;
      spbPreview100Percent.Down := False;

      mskPreviewPercentage.Text := IntToStr(ppViewer1.CalculatedZoom);
    end; {if, carriage return pressed}

end; {procedure, mskPreviewPercentageKeyPress}

{******************************************************************************
 *
 ** I N I T I A L I Z A T I O N   /   F I N A L I Z A T I O N
 *
{******************************************************************************}



procedure TppPrintPreview.saveexcelClick(Sender: TObject);
begin
  if ppViewer1.Report<>nil then
  begin
    scExcelExport1.Dataset:=TppBDEPipeline(tppReport(ppViewer1.Report).DataPipeline).datasource.dataset;
    scExcelExport1.ExportDataset;
  end;
end;

initialization

  ppRegisterForm(TppCustomPreviewer, TppPrintPreview);

finalization

  ppUnRegisterForm(TppCustomPreviewer);

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -