easyprintdlg.pas.svn-base
来自「支持自定义语法高亮显示的编辑器控件」· SVN-BASE 代码 · 共 188 行
SVN-BASE
188 行
{***********************************************************}
{ }
{ Print dialog }
{ }
{ Copyright (c) 1992-2002 Altium Limited }
{ All rights reserved. }
{ }
{ http://www.dream-com.com }
{ contact@dream-com.com }
{ }
{***********************************************************}
unit EasyPrintDlg;
interface
{$I Easy.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, EasyEditor, EasyUtils;
type
TFrmPrintDlg = class(TForm)
gbDestination: TGroupBox;
lblFileName: TLabel;
chkPrintSel: TCheckBox;
gbOptions: TGroupBox;
lblLeftMargin: TLabel;
chkHeader: TCheckBox;
chkLineNum: TCheckBox;
chkSyntaxPrint: TCheckBox;
chkWordWrap: TCheckBox;
chkColorPrint: TCheckBox;
chkProgress: TCheckBox;
SetupBut: TButton;
OkBut: TButton;
CancelBut: TButton;
PrinterSetup: TPrinterSetupDialog;
chkPageNum: TCheckBox;
edLeftIndent: TEdit;
procedure SetupButClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
FEdit : TCustomEasyEdit;
FDialogSettings : TEasyDialogSettings;
procedure InitValues;
procedure SaveValues;
{ Private declarations }
public
{ Public declarations }
end;
var
FrmPrintDlg: TFrmPrintDlg;
procedure PrintWithDialog(AEdit : TCustomEasyEdit);
function EditPrintSettings(AEdit : TCustomEasyEdit) : boolean;
implementation
{$IFNDEF EASY_CLX}
{$R *.DFM}
{$ELSE}
{$R *.xfm}
{$ENDIF}
uses
EasyPrint;
{--------------------------------------------}
procedure PrintWithDialog(AEdit : TCustomEasyEdit);
begin
if EditPrintSettings(AEdit) then
PrintEditor(AEdit);
end;
{--------------------------------------------}
function EditPrintSettings(AEdit : TCustomEasyEdit) : boolean;
begin
with TFrmPrintDlg.Create(Application) do
try
FEdit := AEdit;
InitPrintSettings(AEdit);
InitValues;
result := ShowModal = mrOk;
if result then
begin
SaveValues;
end;
finally
Free;
end;
end;
{--------------------------------------------}
procedure TFrmPrintDlg.InitValues;
var
s : string;
R : TRect;
begin
with PrintSettings do
begin
chkHeader.Checked := prPrintHeader in Options;
chkLineNum.Checked := prLineNumbers in Options;
chkPageNum.Checked := prPageNumbers in Options;
chkWordWrap.Checked := prWrapLines in Options;
chkSyntaxPrint.Checked := prPrintSyntax in Options;
chkColorPrint.Checked := prPrintColor in Options;
chkProgress.Checked := prDisplayProgress in Options;
edLeftIndent.Text := IntToStr(Indent);
chkPrintSel.Enabled := (FEdit <> nil) and (FEdit.SelType <> slNone);
chkPrintSel.Checked := chkPrintSel.Enabled;
if FEdit <> nil then
begin
s := lblFileName.Caption + ': ' + FEdit.EditSource.FileName;
R := lblFileName.Parent.ClientRect;
InflateRect(r, - lblFileName.Left, 0);
DrawText(lblFileName.Canvas.Handle, PChar(s), Length(s), r, DT_PATH_ELLIPSIS or DT_MODIFYSTRING);
lblFileName.Caption := s;
end;
end;
end;
{--------------------------------------------}
procedure TFrmPrintDlg.SaveValues;
begin
with PrintSettings do
begin
if chkHeader.Checked then
Options := Options + [prPrintHeader]
else
Options := Options - [prPrintHeader];
if chkLineNum.Checked then
Options := Options + [prLineNumbers]
else
Options := Options - [prLineNumbers];
if chkPageNum.Checked then
Options := Options + [prPageNumbers]
else
Options := Options - [prPageNumbers];
if chkWordWrap.Checked then
Options := Options + [prWrapLines]
else
Options := Options - [prWrapLines];
if chkSyntaxPrint.Checked then
Options := Options + [prPrintSyntax]
else
Options := Options - [prPrintSyntax];
if chkColorPrint.Checked then
Options := Options + [prPrintColor]
else
Options := Options - [prPrintColor];
if chkProgress.Checked then
Options := Options + [prDisplayProgress]
else
Options := Options - [prDisplayProgress];
if chkPrintSel.Checked then
Scope := psSelectedText
else
Scope := psGlobal;
Indent := StrToIntDef(edLeftIndent.Text, 0);
end;
end;
{--------------------------------------------}
procedure TFrmPrintDlg.SetupButClick(Sender: TObject);
begin
PrinterSetup.Execute;
end;
{--------------------------------------------}
procedure TFrmPrintDlg.FormCreate(Sender: TObject);
begin
FDialogSettings := TEasyDialogSettings.Create(self);
FDialogSettings.Key := 'PrintDlg';
FDialogSettings.LoadSettings;
end;
{--------------------------------------------}
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?