📄 synpreviewdlg.pas
字号:
{-------------------------------------------------------------------------------
单元: SynPreviewDlg.pas
作者: 姚乔锋
日期: 2004.11.26
说明: 打印预览对话框
版本: 1.00 00
-------------------------------------------------------------------------------}
unit SynPreviewDlg;
interface
uses
Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, ComCtrls, ToolWin, ActnList, ImgList, Dialogs,
SynEditPrintPreview, Menus, AppEvnts, Printers, SynEditPrint;
type
TSynPreviewDlg = class(TForm)
ImageList: TImageList;
ActionList: TActionList;
FirstCmd: TAction;
PrevCmd: TAction;
NextCmd: TAction;
LastCmd: TAction;
ZoomCmd: TAction;
PrintCmd: TAction;
CloseCmd: TAction;
ToolBar1: TToolBar;
FirstBtn: TToolButton;
PrevBtn: TToolButton;
NextBtn: TToolButton;
LastBtn: TToolButton;
ToolButton1: TToolButton;
ToolButton3: TToolButton;
ToolButton5: TToolButton;
PrintBtn: TToolButton;
ToolButton4: TToolButton;
CloseBtn: TToolButton;
StatusBar: TStatusBar;
PopupMenu1: TPopupMenu;
Fitto1: TMenuItem;
Pagewidth1: TMenuItem;
N1: TMenuItem;
N251: TMenuItem;
N501: TMenuItem;
N1001: TMenuItem;
N2001: TMenuItem;
N4001: TMenuItem;
ApplicationEvents1: TApplicationEvents;
SynEditPrintPreview: TSynEditPrintPreview;
Panel1: TPanel;
procedure FirstCmdExecute(Sender: TObject);
procedure PrevCmdExecute(Sender: TObject);
procedure NextCmdExecute(Sender: TObject);
procedure LastCmdExecute(Sender: TObject);
procedure ZoomCmdExecute(Sender: TObject);
procedure PrintCmdExecute(Sender: TObject);
procedure CloseCmdExecute(Sender: TObject);
procedure Fitto1Click(Sender: TObject);
procedure ApplicationEvents1Hint(Sender: TObject);
procedure SynEditPrintPreviewMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure SynEditPrintPreviewPreviewPage(Sender: TObject;
PageNumber: Integer);
private
{ Private declarations }
public
{ Public declarations }
procedure Execute(print: TSynEditPrint);
end;
implementation
{$R *.DFM}
procedure TSynPreviewDlg.FirstCmdExecute(Sender: TObject);
begin
SynEditPrintPreview.FirstPage;
end;
procedure TSynPreviewDlg.PrevCmdExecute(Sender: TObject);
begin
SynEditPrintPreview.PreviousPage;
end;
procedure TSynPreviewDlg.NextCmdExecute(Sender: TObject);
begin
SynEditPrintPreview.NextPage;
end;
procedure TSynPreviewDlg.LastCmdExecute(Sender: TObject);
begin
SynEditPrintPreview.LastPage;
end;
procedure TSynPreviewDlg.ZoomCmdExecute(Sender: TObject);
begin
SynEditPrintPreview.ScaleMode := pscWholePage;
end;
procedure TSynPreviewDlg.PrintCmdExecute(Sender: TObject);
begin
SynEditPrintPreview.Print;
end;
procedure TSynPreviewDlg.CloseCmdExecute(Sender: TObject);
begin
Close;
end;
procedure TSynPreviewDlg.Fitto1Click(Sender: TObject);
begin
case (Sender as TMenuItem).Tag of
-1: SynEditPrintPreview.ScaleMode := pscWholePage;
-2: SynEditPrintPreview.ScaleMode := pscPageWidth;
else
SynEditPrintPreview.ScalePercent := (Sender as TMenuItem).Tag;
end;
end;
procedure TSynPreviewDlg.ApplicationEvents1Hint(Sender: TObject);
begin
StatusBar.Panels[0].Text := ' ' + Application.Hint;
end;
procedure TSynPreviewDlg.SynEditPrintPreviewMouseDown(
Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
var
FScale: Integer;
begin
FScale := SynEditPrintPreview.ScalePercent;
if Button = mbLeft then
begin
if SynEditPrintPreview.ScaleMode = pscWholePage then
SynEditPrintPreview.ScalePercent := 100
else
begin
FScale := FScale * 2;
if FScale > 400 then
FScale := 400;
SynEditPrintPreview.ScalePercent := FScale;
end;
end
else begin
FScale := FScale div 2;
if FScale < 25 then
FScale := 25;
SynEditPrintPreview.ScalePercent := FScale;
end;
end;
procedure TSynPreviewDlg.SynEditPrintPreviewPreviewPage(
Sender: TObject; PageNumber: Integer);
begin
StatusBar.Panels[1].Text := ' 页: ' + IntToStr(SynEditPrintPreview.PageNumber);
end;
procedure TSynPreviewDlg.Execute(print: TSynEditPrint);
begin
SynEditPrintPreview.SynEditPrint := print;
SynEditPrintPreview.UpdatePreview;
SynEditPrintPreview.FirstPage;
if Printer.PrinterIndex >= 0 then
PrintCmd.Hint := '打印 (' + Printer.Printers[Printer.PrinterIndex] +
')|打印这个文档在打印机 ' + Printer.Printers[Printer.PrinterIndex];
ShowModal;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -