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 + -
显示快捷键?