📄 aceview.pas
字号:
if CurrentPreview.Description = '' then Caption := LoadStr(SCT_CViewerCaption)
else Caption := CurrentPreview.Description;
if LoadMeter.Progress = 100 then Generating := False;
end;
procedure TAceViewer.DividerMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CursorPosition.left := divider.left + x;
MouseIsDown := true;
CursorPosition.Visible := true;
CursorPosition.Align := alNone;
LeftPreview.Align := alNone;
RightPreview.Align := alNone;
Divider.Align := alNone;
end;
procedure TAceViewer.DividerMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
NewSpot: Integer;
begin
if MouseIsDown then
begin
NewSpot := Divider.Left + x;
if NewSpot < 20 then NewSpot := 20
else if NewSpot > (ClientWidth - 24) then NewSpot := (ClientWidth - 24);
CursorPosition.left := NewSpot;
end;
end;
procedure TAceViewer.DividerMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
RightPreview.Width := ClientWidth - CursorPosition.left;
CursorPosition.Align := alRight;
MouseIsDown := False;
CursorPosition.Visible := False;
RightPreview.Align := alRight;
Divider.Align := alRight;
LeftPreview.Align := alClient;
ZoomValuesChange( ZoomValues );
end;
procedure TAceViewer.SetAceFile(AF: TAceFile);
begin
LoadMeter.Progress := 0;
Generating := True;
ShowFirst := True;
CurrentPreview.LoadFromAceFile(AF);
CurrentPreview.AcePrinterSetup := AF.AcePrinterSetup;
end;
procedure TAceViewer.Close1Click(Sender: TObject);
begin
if LeftPreview.Filer.AceFile <> RightPreview.Filer.AceFile then
begin
CurrentPreview.Filer.Acefile.free;
end;
CurrentPreview.Filer.Acefile := nil;
CurrentPreview.Invalidate;
end;
procedure TAceViewer.ZoomValuesChange(Sender: TObject);
begin
CurrentPreview.AceZoom := TAceZoom( TComboBox(Sender).ItemIndex );
if Synchronized.Checked then
begin
if CurrentPreview = LeftPreview then RightPreview.AceZoom := LeftPreview.AceZoom
else LeftPreview.AceZoom := RightPreview.AceZoom;
end;
end;
procedure TAceViewer.SetZoom( zoom: TAceZoom );
begin
ZoomValues.ItemIndex := Ord(Zoom);
ZoomValuesChange( ZoomValues );
end;
procedure TAceViewer.SynchronizedClick(Sender: TObject);
begin
TMenuItem(Sender).Checked := Not TMenuItem(Sender).Checked;
{ make sure zoom is same when synchronized }
if TMenuItem(Sender).Checked then
begin
if CurrentPreview = LeftPreview then RightPreview.Zoom := LeftPreview.Zoom
else LeftPreview.Zoom := RightPreview.Zoom;
end;
end;
procedure TAceViewer.LeftPreviewVertScroll(Sender: TObject);
begin
if Synchronized.Checked And TwoPages.Checked then
RightPreview.VertScrollBar.Position := LeftPreview.VertScrollBar.Position;
end;
procedure TAceViewer.LeftPreviewHorzScroll(Sender: TObject);
begin
if Synchronized.Checked And TwoPages.Checked then
RightPreview.HorzScrollBar.Position := LeftPreview.HorzScrollBar.Position;
end;
procedure TAceViewer.RightPreviewVertScroll(Sender: TObject);
begin
if Synchronized.Checked And TwoPages.Checked then
LeftPreview.VertScrollBar.Position := RightPreview.VertScrollBar.Position;
end;
procedure TAceViewer.RightPreviewHorzScroll(Sender: TObject);
begin
if Synchronized.Checked And TwoPages.Checked then
LeftPreview.HorzScrollBar.Position := RightPreview.HorzScrollBar.Position;
end;
procedure TAceViewer.sendprinterClick(Sender: TObject);
var
pd: TAcePrintDestination;
ps: TAcePreviewStatus;
CopyPS: TAcePrinterSetup;
begin
CopyPS := TAcePrinterSetup.Create;
CopyPS.Assign(CurrentPreview.AcePrinterSetup);
pd := TAcePrintDestination.Create(Application);
pd.Viewer := Self;
pd.Preview := CurrentPreview;
pd.AcePrinterSetup := CurrentPreview.AcePrinterSetup;
pd.AcePrinterSetup.SetData;
try
if (pd.ShowModal = mrOk) then
begin
Include(FViewerMode, vmPrinting);
UpdateControls;
ps := TAcePreviewStatus.Create(Self);
try
ps.Preview := CurrentPreview;
ps.Show;
CurrentPreview.IgnorePrinterSettings := Not CopyPS.IsEqual(pd.AcePrinterSetup);
CurrentPreview.PrintStatus := ps.UpdateStatus;
CurrentPreview.SendPagesToPrinter(pd.StartPage, pd.EndPage);
finally
ps.free;
end;
end;
finally
pd.free;
CopyPS.Free;
Exclude(FViewerMode, vmPrinting);
UpdateControls;
end;
end;
procedure TAceViewer.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 TAceViewer.GetLoadPercent: Single;
begin
result := 0;
if CurrentPreview.Filer.AceFile <> nil then
result := TAceAceFile(CurrentPreview.Filer.AceFile).PercentDone;
end;
procedure TAceViewer.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 TAceViewer.FormDestroy(Sender: TObject);
begin
{ make sure they are not deleting the same object }
if LeftPreview.Filer.AceFile = RightPreview.Filer.AceFile then
RightPreview.Filer.AceFile := nil;
end;
procedure TAceViewer.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 TAceViewer.UpdateStatus(Sender: TObject);
begin
UpdatePage;
end;
procedure TAceViewer.UpdateControls;
begin
File1.Enabled := FViewerMode = [];
ToolBar.Enabled := Not (vmPrinting in FViewerMode);
end;
procedure TAceViewer.GotoPage1Click(Sender: TObject);
var
ag: TAceGotoPage;
pg: Integer;
begin
ag := TAceGotoPage.Create(self);
try
ag.Label1.Caption := LoadStr(SCT_CGotoPrompt);
ag.Caption := LoadStr(SCT_CGotoTitle);
ag.Button1.Caption := LoadStr(SCT_CGotoBtn);
ag.Button2.Caption := LoadStr(SCT_CGotoCancel);
if (ag.ShowModal = mrOk) then
begin
pg := StrToInt(ag.PageNum.Text);
CurrentPreview.Page := pg;
UpdatePage;
end;
finally
ag.free;
end;
end;
procedure TAceViewer.ToolBarMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if (mbLeft = Button) And (ssCtrl in Shift) then
begin
ShowMessage('Ace Reporter Version ' + AceVersion);
end;
end;
procedure TAceViewer.sendprinterMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
ps: TAcePreviewStatus;
begin
if Button = mbRight then
begin
try
Include(FViewerMode, vmPrinting);
UpdateControls;
ps := TAcePreviewStatus.Create(Self);
try
ps.Preview := CurrentPreview;
ps.Show;
CurrentPreview.IgnorePrinterSettings := False;
CurrentPreview.PrintStatus := ps.UpdateStatus;
CurrentPreview.SendPagesToPrinter(0,0);
finally
ps.free;
end;
finally
Exclude(FViewerMode, vmPrinting);
UpdateControls;
end;
end;
end;
procedure TAceViewer.ToolBarDblClick(Sender: TObject);
begin
if CurrentPreview.AceZoom = azPage then SetZoom(az100) else SetZoom(azPage);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -