📄 aceview.pas
字号:
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 + -