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

📄 aceview.pas

📁 suite component ace report
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit AceView;

{ ----------------------------------------------------------------
  Ace Reporter
  Copyright 1995-1998 SCT Associates, Inc.
  Written by Kevin Maher, Steve Tyrakowski
  ---------------------------------------------------------------- }

interface
{$B-}

{$define noSTANDALONE}
{$ifdef VER110}{$ObjExportAll On}{$endif}
uses
  {$IFDEF WIN32}
    windows,
  {$ELSE}
    winprocs,wintypes,
  {$ENDIF}
  SysUtils, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Aceprev, ExtCtrls,
  Menus, Buttons, AceFile, Acemeter, AceSetup;

type
  TAceViewerMode = set of (vmGenerating, vmPrinting);

  TAceViewer = class(TForm)
    LeftPreview: 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;
    ViewToolbar: TMenuItem;
    TwoPages: TMenuItem;
    RightPreview: TAcePreview;
    Divider: TPanel;
    CursorPosition: TPanel;
    firstpage: TSpeedButton;
    PreviousPage: TSpeedButton;
    NextPage: TSpeedButton;
    LastPage: TSpeedButton;
    PageNum: TLabel;
    Options1: TMenuItem;
    Synchronized: TMenuItem;
    LoadMeter: TAceMeter;
    Stop: TSpeedButton;
    Navigate1: TMenuItem;
    Next1: TMenuItem;
    Back1: TMenuItem;
    FirstPage1: TMenuItem;
    LastPage1: TMenuItem;
    GotoPage1: TMenuItem;
    procedure Open1Click(Sender: TObject);
    procedure Save1Click(Sender: TObject);
    procedure PrintSetup1Click(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure ViewToolbarClick(Sender: TObject);
    procedure TwoPagesClick(Sender: TObject);
    procedure LeftPreviewClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure RightPreviewClick(Sender: TObject);
    procedure firstpageClick(Sender: TObject);
    procedure PreviousPageClick(Sender: TObject);
    procedure NextPageClick(Sender: TObject);
    procedure LastPageClick(Sender: TObject);
    procedure DividerMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure DividerMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure DividerMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Close1Click(Sender: TObject);
    procedure ZoomValuesChange(Sender: TObject);
    procedure SynchronizedClick(Sender: TObject);
    procedure LeftPreviewVertScroll(Sender: TObject);
    procedure LeftPreviewHorzScroll(Sender: TObject);
    procedure RightPreviewVertScroll(Sender: TObject);
    procedure RightPreviewHorzScroll(Sender: TObject);
    procedure sendprinterClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure StopClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure GotoPage1Click(Sender: TObject);
    procedure ToolBarMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure sendprinterMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ToolBarDblClick(Sender: TObject);

  private
    { Private declarations }
    MouseIsDown: Boolean;
    ShowFirst: Boolean;
    FOnAbort: TNotifyEvent;
    FGenerating: Boolean;
    FViewerMode: TAceViewerMode;
    procedure SetGenerating( Value: Boolean);
  public
    { Public declarations }
    CurrentPreview: TAcePreview;
    function GetLoadPercent: Single;
    procedure SelectPreview(p: TAcePreview);
    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: TAceViewerMode read FViewerMode write FViewerMode;
    procedure UpdateControls;
    procedure SetZoom( Zoom: TAceZoom );
  end;

var
  AceViewer: TAceViewer;
  AceViewerDir: String;

implementation

uses printers, aceout, clipbrd, acedest, acepstat, acegoto, aceutil, sctconst;

{$R *.DFM}

procedure TAceViewer.Open1Click(Sender: TObject);
begin
  if OpenFileDialog.Execute then
  begin
    if LeftPreview.Filer.AceFile = RightPreview.Filer.AceFile then
    begin
      CurrentPreview.Filer.AceFile := nil;
    end;
    CurrentPreview.LoadFromFile(OpenFileDialog.FileName);
    UpdatePage;
  end;
end;

procedure TAceViewer.Save1Click(Sender: TObject);
begin
  if CurrentPreview.Filer.AceFile <> nil then
  begin
    if TAceAceFile(CurrentPreview.Filer.AceFile).FileName <> '' then
      SaveFileDialog.FileName := TAceAceFile(CurrentPreview.Filer.AceFile).FileName;
  end;

  if SaveFileDialog.Execute then
  begin
    CurrentPreview.SaveToFile(SaveFileDialog.FileName);
  end;
end;

procedure TAceViewer.PrintSetup1Click(Sender: TObject);
begin
  CurrentPreview.AcePrinterSetup.SetData;
  printersetup.execute;
  CurrentPreview.AcePrinterSetup.GetData;
end;

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

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

procedure TAceViewer.TwoPagesClick(Sender: TObject);
begin
  TMenuItem(Sender).Checked := Not TMenuItem(Sender).Checked;
  if TMenuItem(Sender).Checked then
  begin
    if RightPreview.Filer.AceFile = nil then
    begin
      RightPreview.LoadFromAceFile(LeftPreview.Filer.AceFile);
    end;
  end else if CurrentPreview = RightPreview then SelectPreview(LeftPreview);
  RightPreview.Width := Width div 2;
  RightPreview.visible := TMenuItem(Sender).Checked;
  Divider.Visible := TMenuItem(Sender).Checked;

end;

procedure TAceViewer.LeftPreviewClick(Sender: TObject);
begin
  SelectPreview(LeftPreview);
end;

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

  {Get Resource Strings}

   File1.Caption :=LoadStr(SCT_CFileMenu);
   Options1.Caption :=LoadStr(SCT_COptionMenu);
   Navigate1.Caption :=LoadStr(SCT_CNavigateMenu);

   Open1.Caption :=LoadStr(SCT_COpenItem );
   Close1.Caption :=LoadStr(SCT_CCloseItem );
   Save1.Caption :=LoadStr(SCT_CSaveItem);
   Printsetup1.Caption :=LoadStr(SCT_CPrintSetupItem);
   Print1.Caption :=LoadStr(SCT_CPrintItem);
   mitemExit.Caption :=LoadStr(SCT_CExitItem);
   Synchronized.Caption :=LoadStr(SCT_CSyncItem);
   ViewToolbar.Caption :=LoadStr(SCT_CToolbarItem);
   TwoPages.Caption :=LoadStr(SCT_CTwoPageItem);
   NextPage.Hint :=LoadStr(SCT_CNextPage);
   PreviousPage.Hint :=LoadStr(SCT_CPrevPage);
   FirstPage.Hint :=LoadStr(SCT_CFirstPage);
   LastPage.Hint :=LoadStr(SCT_CLastPage);
   Next1.Caption :=LoadStr(SCT_CNextPage);
   Back1.Caption :=LoadStr(SCT_CPrevPage);
   FirstPage1.Caption :=LoadStr(SCT_CFirstPage);
   LastPage1.Caption :=LoadStr(SCT_CLastPage);
   GotoPage1.Caption :=LoadStr(SCT_CGotoPage);
   btnClose.Hint :=LoadStr(SCT_CCloseBtnHint);
   btnClose.Caption :=LoadStr(SCT_CCloseBtn);
   sendprinter.hint :=LoadStr(SCT_CSendPrinter);
   stop.hint :=LoadStr(SCT_CAbortBtn);
   ZoomValues.Hint := LoadStr(SCT_CZoomHint);
   PageNum.Hint := LoadStr(SCT_CPageNumHint);

  
  SelectPreview(LeftPreview);

  {$ifdef STANDALONE}
    {only use this code if making a standalone viewer}
    printers.printer.printerindex := -1;                         
    CurrentPreview.AcePrinterSetup.GetData;          
  {$endif}

  OpenFileDialog.InitialDir := AceViewerDir;
  SaveFileDialog.InitialDir := AceViewerDir;
end;

procedure TAceViewer.SelectPreview(p: TAcePreview);
begin
  CurrentPreview := p;
  p.borderStyle := bsSingle;
  if p = LeftPreview then RightPreview.borderstyle := bsNone
  else LeftPreview.borderstyle := bsNone;
  UpdatePage;
  ZoomValues.ItemIndex := Ord(CurrentPreview.AceZoom);
end;


procedure TAceViewer.RightPreviewClick(Sender: TObject);
begin
  SelectPreview(RightPreview);
end;

procedure TAceViewer.firstpageClick(Sender: TObject);
begin
  CurrentPreview.FirstPage;
  UpdatePage;
end;

procedure TAceViewer.PreviousPageClick(Sender: TObject);
begin
  CurrentPreview.PriorPage;
  UpdatePage;
end;

procedure TAceViewer.NextPageClick(Sender: TObject);
begin
  CurrentPreview.NextPage;
  UpdatePage;
end;

procedure TAceViewer.LastPageClick(Sender: TObject);
begin
  CurrentPreview.LastPage;
  UpdatePage;
end;

procedure TAceViewer.UpdatePage;
begin
  LoadMeter.Progress := Round(GetLoadPercent);
  PageNum.Caption := LoadStr(SCT_CPage)+' ' + IntToStr(CurrentPreview.page) + '/' + IntToStr(CurrentPreview.PageCount);
  if ShowFirst then
  begin
    if (CurrentPreview.PageCount > 1) Or (LoadMeter.Progress = 100) then
    begin
      ShowFirst := False;
      CurrentPreview.Invalidate;
    end;
  end;

⌨️ 快捷键说明

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