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

📄 myprev.pas

📁 suite component ace report
💻 PAS
字号:
unit myprev;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Aceprev, ExtCtrls,
  Menus, Buttons, AceFile, Acemeter;

type
  TViewerMode = set of (vmGenerating, vmPrinting);

  TViewer = class(TForm)
    Preview: TAcePreview;
    PrinterSetup: TPrinterSetupDialog;
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Open1: TMenuItem;
    Close1: TMenuItem;
    N1: TMenuItem;
    Save1: TMenuItem;
    N2: TMenuItem;
    PrintSetup1: TMenuItem;
    Print1: TMenuItem;
    N3: TMenuItem;
    mitemExit: TMenuItem;
    OpenFileDialog: TOpenDialog;
    SaveFileDialog: TSaveDialog;
    ToolBar: TPanel;
    sendprinter: TSpeedButton;
    btnClose: TSpeedButton;
    ZoomValues: TComboBox;
    Options1: TMenuItem;
    ViewToolbar: TMenuItem;
    CursorPosition: TPanel;
    firstpage: TSpeedButton;
    PreviousPage: TSpeedButton;
    NextPage: TSpeedButton;
    LastPage: TSpeedButton;
    PageNum: TLabel;
    TreeducerPrint1: TMenuItem;
    LoadMeter: TAceMeter;
    Stop: TSpeedButton;
    Navigate1: TMenuItem;
    NextPage1: TMenuItem;
    PriorPage1: TMenuItem;
    LastPage1: TMenuItem;
    FirstPage1: TMenuItem;
    GotoPage1: TMenuItem;
    procedure Open1Click(Sender: TObject);
    procedure Save1Click(Sender: TObject);
    procedure PrintSetup1Click(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure ViewToolbarClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure firstpageClick(Sender: TObject);
    procedure PreviousPageClick(Sender: TObject);
    procedure NextPageClick(Sender: TObject);
    procedure LastPageClick(Sender: TObject);
    procedure Close1Click(Sender: TObject);
    procedure ZoomValuesChange(Sender: TObject);
    procedure sendprinterClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure StopClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure GotoPage1Click(Sender: TObject);

  private
    { Private declarations }
    ShowFirst: Boolean;
    FOnAbort: TNotifyEvent;
    FGenerating: Boolean;
    FViewerMode: TViewerMode;
    procedure SetGenerating( Value: Boolean);
  public
    { Public declarations }
    function GetLoadPercent: Single;
    procedure UpdatePage;
    procedure SetAceFile(AF: TAceFile);
    procedure UpdateStatus(Sender: TObject);
    property OnAbort: TNotifyEvent read FOnAbort write FOnAbort;
    property Generating: Boolean read FGenerating write SetGenerating;
    property ViewerMode: TViewerMode read FViewerMode write FViewerMode;
    procedure UpdateControls;
  end;

var
  Viewer: TViewer;

implementation

uses printers, aceout, clipbrd, acedest, acepstat, acegoto,acesetup  ;

{$R *.DFM}

procedure TViewer.Open1Click(Sender: TObject);
begin
  if OpenFileDialog.Execute then
  begin
    Preview.LoadFromFile(OpenFileDialog.FileName);
    ZoomValues.ItemIndex := Ord(Preview.AceZoom);
  end;
end;

procedure TViewer.Save1Click(Sender: TObject);
begin
  if SaveFileDialog.Execute then
    Preview.SaveToFile(SaveFileDialog.FileName);
end;

procedure TViewer.PrintSetup1Click(Sender: TObject);
begin
  Preview.AcePrinterSetup.SetData;
  printersetup.execute;
  Preview.AcePrinterSetup.GetData;
  ZoomValuesChange(ZoomValues);
end;

procedure TViewer.btnCloseClick(Sender: TObject);
begin
  Close;
end;

procedure TViewer.ViewToolbarClick(Sender: TObject);
begin
  TMenuItem(Sender).Checked := Not TMenuItem(Sender).Checked;
  ToolBar.Visible := TMenuItem(Sender).Checked;
end;

procedure TViewer.FormCreate(Sender: TObject);
begin
  FGenerating := False;
  ShowFirst := True;
end;

procedure TViewer.firstpageClick(Sender: TObject);
begin
  Preview.FirstPage;
  UpdatePage;
end;

procedure TViewer.PreviousPageClick(Sender: TObject);
begin
  Preview.PriorPage;
  UpdatePage;
end;

procedure TViewer.NextPageClick(Sender: TObject);
begin
  Preview.NextPage;
  UpdatePage;
end;

procedure TViewer.LastPageClick(Sender: TObject);
begin
  Preview.LastPage;
  UpdatePage;
end;

procedure TViewer.UpdatePage;
begin
  LoadMeter.Progress := Round(GetLoadPercent);
  PageNum.Caption := 'Page: ' + IntToStr(Preview.page) + '/' + IntToStr(Preview.PageCount);
  if ShowFirst And ((Preview.PageCount > 1) Or (LoadMeter.Progress = 100)) then
  begin
    ShowFirst := False;
    Preview.Invalidate;
  end;
  if Preview.Description = '' then Caption := 'Preview'
  else Caption := Preview.Description;
  if LoadMeter.Progress = 100 then Generating := False;
end;

procedure TViewer.SetAceFile(AF: TAceFile);
begin
  LoadMeter.Progress := 0;
  ShowFirst := True;
  Preview.LoadFromAceFile(AF);
  Preview.AcePrinterSetup := AF.AcePrinterSetup;
  ZoomValues.ItemIndex := Ord(Preview.AceZoom);
  Generating := True;
end;

procedure TViewer.Close1Click(Sender: TObject);
begin
  Preview.Filer.Acefile.free;
  Preview.Filer.Acefile := nil;
  Preview.Invalidate;
end;

procedure TViewer.ZoomValuesChange(Sender: TObject);
begin
  Preview.AceZoom := TAceZoom( TComboBox(Sender).ItemIndex );
end;

procedure TViewer.sendprinterClick(Sender: TObject);
var
  pd: TAcePrintDestination;
  ps: TAcePreviewStatus;
  CopyPS: TAcePrinterSetup;
begin
  CopyPS := TAcePrinterSetup.Create;
  CopyPS.Assign(Preview.AcePrinterSetup);

  pd := TAcePrintDestination.Create(Application);
  pd.Viewer := Self;
  pd.Preview := Preview;
  pd.AcePrinterSetup := Preview.AcePrinterSetup;
  pd.AcePrinterSetup.SetData;
  try
    if (pd.ShowModal = mrOk) then
    begin
      Include(FViewerMode, vmPrinting);
      UpdateControls;
      ps := TAcePreviewStatus.Create(Self);
      try
        ps.Preview := Preview;
        ps.Show;
{        Preview.IgnorePrinterSettings := pd.OverrideSettings.Checked;}
        Preview.IgnorePrinterSettings := Not CopyPS.IsEqual(pd.AcePrinterSetup);
        Preview.PrintStatus := ps.UpdateStatus;
        Preview.SendPagesToPrinter(pd.StartPage, pd.EndPage);
      finally
        ps.free;
      end;
    end;
  finally
    CopyPS.Free;
    pd.free;
    Exclude(FViewerMode, vmPrinting);
    UpdateControls;
  end;
end;

procedure TViewer.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Generating And Assigned(FOnAbort) then
  begin
    try
      FOnAbort(Self);
    except
      Application.HandleException(Self);
    end;
  end;
  { make sure this isn't called again }
  FOnAbort := nil;
  Generating := False;

  Action := caFree;
end;

function TViewer.GetLoadPercent: Single;
begin
  result := 0;
  if Preview.Filer.AceFile <> nil then
    result := TAceAceFile(Preview.Filer.AceFile).PercentDone;
end;

procedure TViewer.StopClick(Sender: TObject);
begin
  if Assigned(FOnAbort) then
  begin
    try
      FOnAbort(Self);
    except
      Application.HandleException(Self);
    end;
  end;
  { make sure this isn't called again }
  FOnAbort := nil;

  Generating := False;
end;

procedure TViewer.SetGenerating( Value: Boolean);
begin
  if FGenerating <> Value then
  begin
    FGenerating := Value;
  end;

  stop.Enabled := FGenerating;
  if Value then Include(FViewerMode, vmGenerating)
  else Exclude(FViewerMode, vmGenerating);

  UpdateControls;
end;

procedure TViewer.UpdateStatus(Sender: TObject);
begin
  UpdatePage;
end;

procedure TViewer.FormResize(Sender: TObject);
begin
  ZoomValuesChange(ZoomValues);
end;

procedure TViewer.UpdateControls;
begin
  File1.Enabled := FViewerMode = [];
end;


procedure TViewer.GotoPage1Click(Sender: TObject);
var
  ag: TAceGotoPage;
  pg: Integer;
begin
  ag := TAceGotoPage.Create(self);
  try
    if (ag.ShowModal = mrOk) then
    begin
      pg := StrToInt(ag.PageNum.Text);
      Preview.Page := pg;
      UpdatePage;
    end;
  finally
    ag.free;
  end;
end;

end.



⌨️ 快捷键说明

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