⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skinprinter.pas

📁 DynamicSkinForm.v9.15.For.Delphi.BCB 很好的皮肤控件
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{*******************************************************************}
{                                                                   }
{       Almediadev Visual Component Library                         }
{       DynamicSkinForm                                             }
{       Version 9.15                                                }
{                                                                   }
{       Copyright (c) 2000-2008 Almediadev                          }
{       ALL RIGHTS RESERVED                                         }
{                                                                   }
{       Home:  http://www.almdev.com                                }
{       Support: support@almdev.com                                 }
{                                                                   }
{*******************************************************************}

unit SkinPrinter;

interface

uses Windows, SysUtils, Messages, Classes, Graphics, Controls, Forms,
     DynamicSkinForm, SkinData, SkinCtrls, SkinBoxCtrls, Dialogs,
     StdCtrls, ExtCtrls, spEffBmp;

type

  TspPrintRange = (bsprAllPages, bsprSelection, bsprPageNums);
  TspPrintDialogOption = (bspoPrintToFile, bspoPageNums, bspoSelection,
    bspoDisablePrintToFile);
  TspPrintDialogOptions = set of TspPrintDialogOption;

  TspSkinPrintDialog = class(TComponent)
  private
    PrinterCombobox: TspSkinComboBox;
    L1, L2, L3, L4: TspSkinStdLabel;
    NumCopiesEdit: TspSkinSpinEdit;
    CollateCheckBox: TspSkinCheckRadioBox;
    StopCheck: Boolean;
    CollateImage: TImage;
    RBAll, RBPages, RBSelection: TspSkinCheckRadioBox;
    FromPageEdit, ToPageEdit: TspSkinSpinEdit;
    PrintToFileCheckBox: TspSkinCheckRadioBox;
    FGroupBoxTransparentMode: Boolean;
  protected
    Form: TForm;
    FSD: TspSkinData;
    FCtrlFSD: TspSkinData;
    FButtonSkinDataName: String;
    FSelectSkinDataName: String;
    FLabelSkinDataName: String;
    FDefaultLabelFont: TFont;
    FDefaultSelectFont: TFont;
    FDefaultButtonFont: TFont;
    FAlphaBlend: Boolean;
    FAlphaBlendValue: Byte;
    FAlphaBlendAnimation: Boolean;
    FUseSkinFont: Boolean;
    FTitle: String;
    //
    FFromPage: Integer;
    FToPage: Integer;
    FCollate: Boolean;
    FOptions: TspPrintDialogOptions;
    FPrintToFile: Boolean;
    FPrintRange: TspPrintRange;
    FMinPage: Integer;
    FMaxPage: Integer;
    FCopies: Integer;
    procedure SetNumCopies(Value: Integer);
    //
    procedure FromPageEditChange(Sender: TObject);
    procedure ToPageEditChange(Sender: TObject);

    procedure SetDefaultLabelFont(Value: TFont);
    procedure SetDefaultButtonFont(Value: TFont);
    procedure SetDefaultSelectFont(Value: TFont);
    function GetTitle: string;
    procedure SetTitle(const Value: string);
    procedure Notification(AComponent: TComponent;  Operation: TOperation); override;
    procedure PrinterComboBoxChange(Sender: TObject);
    procedure PropertiesButtonClick(Sender: TObject);
    procedure NumCopiesEditChange(Sender: TObject);
    procedure CollateCheckBoxClick(Sender: TObject);
  public
    function Execute: Boolean;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property GroupBoxTransparentMode: Boolean
      read FGroupBoxTransparentMode write FGroupBoxTransparentMode;
    property Title: string read GetTitle write SetTitle;
    property AlphaBlend: Boolean read FAlphaBlend write FAlphaBlend;
    property AlphaBlendValue: Byte read FAlphaBlendValue write FAlphaBlendValue;
    property AlphaBlendAnimation: Boolean
      read FAlphaBlendAnimation write FAlphaBlendAnimation;
    property SkinData: TspSkinData read FSD write FSD;
    property CtrlSkinData: TspSkinData read FCtrlFSD write FCtrlFSD;
    property ButtonSkinDataName: String read FButtonSkinDataName write FButtonSkinDataName;
    property LabelSkinDataName: String read FLabelSkinDataName write FLabelSkinDataName;
    property ComboboxSkinDataName: String read FSelectSkinDataName write FSelectSkinDataName;
    property DefaultLabelFont: TFont read FDefaultLabelFont write SetDefaultLabelFont;
    property DefaultButtonFont: TFont read FDefaultButtonFont write SetDefaultButtonFont;
    property DefaultComboBoxFont: TFont read FDefaultSelectFont write SetDefaultSelectFont;
    property UseSkinFont: Boolean read FUseSkinFont write FUseSkinFont;
    //
    property Collate: Boolean read FCollate write FCollate default False;
    property Copies: Integer read FCopies write SetNumCopies default 0;
    property FromPage: Integer read FFromPage write FFromPage default 0;
    property MinPage: Integer read FMinPage write FMinPage default 0;
    property MaxPage: Integer read FMaxPage write FMaxPage default 0;
    property Options: TspPrintDialogOptions read FOptions write FOptions default [];
    property PrintToFile: Boolean read FPrintToFile write FPrintToFile default False;
    property PrintRange: TspPrintRange read FPrintRange write FPrintRange default bsprAllPages;
    property ToPage: Integer read FToPage write FToPage default 0;
    //
  end;

  TspPaperInfo = class
  private
    FDMPaper: Integer;
    FName: string;
    FSize: TPoint;
    function GetSize(Index: Integer): Integer;
    procedure SetSize(Index: Integer; Value: Integer);
  public
    procedure Assign(Source: TspPaperInfo);
    function IsEqual(Source: TspPaperInfo): Boolean;

    property DMPaper: Integer read FDMPaper;
    property Height: Integer index 1 read GetSize write SetSize;
    property Name: string read FName;
    property Size: TPoint read FSize;
    property Width: Integer index 0 read GetSize write SetSize;
  end;

  TspSkinPrinterSetupDialog = class(TComponent)
  private
    StopCheck: Boolean;
    PrinterCombobox: TspSkinComboBox;
    L1, L2, L3, L4: TspSkinStdLabel;
    RBPortrait, RBLandScape: TspSkinCheckRadioBox;
    OrientationImage: TImage;
    SizeComboBox, SourceComboBox: TspSkinComboBox;
    Bins, Papers: TStrings;
    FGroupBoxTransparentMode: Boolean;
    procedure RBPortraitClick(Sender: TObject);
    procedure RBLandScapeClick(Sender: TObject);
    procedure SizeComboBoxChange(Sender: TObject);
    procedure SourceComboBoxChange(Sender: TObject);
    procedure ClearPapersAndBins;
    procedure LoadPapersAndBins;
    procedure LoadCurrentPaperAndBin;
    procedure SaveCurrentPaperAndBin;
  protected
    Form: TForm;
    FSD: TspSkinData;
    FCtrlFSD: TspSkinData;
    FButtonSkinDataName: String;
    FSelectSkinDataName: String;
    FLabelSkinDataName: String;
    FDefaultLabelFont: TFont;
    FDefaultSelectFont: TFont;
    FDefaultButtonFont: TFont;
    FAlphaBlend: Boolean;
    FAlphaBlendValue: Byte;
    FAlphaBlendAnimation: Boolean;
    FUseSkinFont: Boolean;
    FTitle: String;
    procedure SetDefaultLabelFont(Value: TFont);
    procedure SetDefaultButtonFont(Value: TFont);
    procedure SetDefaultSelectFont(Value: TFont);
    function GetTitle: string;
    procedure SetTitle(const Value: string);
    procedure Notification(AComponent: TComponent;  Operation: TOperation); override;
    procedure PrinterComboBoxChange(Sender: TObject);
    procedure PropertiesButtonClick(Sender: TObject);
  public
    function Execute: Boolean;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property GroupBoxTransparentMode: Boolean
      read FGroupBoxTransparentMode write FGroupBoxTransparentMode;
    property Title: string read GetTitle write SetTitle;
    property AlphaBlend: Boolean read FAlphaBlend write FAlphaBlend;
    property AlphaBlendValue: Byte read FAlphaBlendValue write FAlphaBlendValue;
    property AlphaBlendAnimation: Boolean
      read FAlphaBlendAnimation write FAlphaBlendAnimation;
    property SkinData: TspSkinData read FSD write FSD;
    property CtrlSkinData: TspSkinData read FCtrlFSD write FCtrlFSD;
    property ButtonSkinDataName: String read FButtonSkinDataName write FButtonSkinDataName;
    property LabelSkinDataName: String read FLabelSkinDataName write FLabelSkinDataName;
    property ComboboxSkinDataName: String read FSelectSkinDataName write FSelectSkinDataName;
    property DefaultLabelFont: TFont read FDefaultLabelFont write SetDefaultLabelFont;
    property DefaultButtonFont: TFont read FDefaultButtonFont write SetDefaultButtonFont;
    property DefaultComboBoxFont: TFont read FDefaultSelectFont write SetDefaultSelectFont;
    property UseSkinFont: Boolean read FUseSkinFont write FUseSkinFont;
  end;

  TspSkinSmallPrintDialog = class(TComponent)
  protected
    FGroupBoxTransparentMode: Boolean; 
    Form: TForm;
    FSD: TspSkinData;
    FCtrlFSD: TspSkinData;
    FButtonSkinDataName: String;
    FSelectSkinDataName: String;
    FLabelSkinDataName: String;
    FDefaultLabelFont: TFont;
    FDefaultSelectFont: TFont;
    FDefaultButtonFont: TFont;
    FAlphaBlend: Boolean;
    FAlphaBlendValue: Byte;
    FAlphaBlendAnimation: Boolean;
    FUseSkinFont: Boolean;
    FTitle: String;
    PrinterCombobox: TspSkinComboBox;
    L1, L2, L3, L4: TspSkinStdLabel;
    procedure SetDefaultLabelFont(Value: TFont);
    procedure SetDefaultButtonFont(Value: TFont);
    procedure SetDefaultSelectFont(Value: TFont);
    function GetTitle: string;
    procedure SetTitle(const Value: string);
    procedure Notification(AComponent: TComponent;  Operation: TOperation); override;
    procedure PropertiesButtonClick(Sender: TObject);
    procedure PrinterComboBoxChange(Sender: TObject);
  public
    function Execute: Boolean;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property GroupBoxTransparentMode: Boolean
      read FGroupBoxTransparentMode write FGroupBoxTransparentMode;
    property Title: string read GetTitle write SetTitle;
    property AlphaBlend: Boolean read FAlphaBlend write FAlphaBlend;
    property AlphaBlendValue: Byte read FAlphaBlendValue write FAlphaBlendValue;
    property AlphaBlendAnimation: Boolean
      read FAlphaBlendAnimation write FAlphaBlendAnimation;
    property SkinData: TspSkinData read FSD write FSD;
    property CtrlSkinData: TspSkinData read FCtrlFSD write FCtrlFSD;
    property ButtonSkinDataName: String read FButtonSkinDataName write FButtonSkinDataName;
    property LabelSkinDataName: String read FLabelSkinDataName write FLabelSkinDataName;
    property ComboboxSkinDataName: String read FSelectSkinDataName write FSelectSkinDataName;
    property DefaultLabelFont: TFont read FDefaultLabelFont write SetDefaultLabelFont;
    property DefaultButtonFont: TFont read FDefaultButtonFont write SetDefaultButtonFont;
    property DefaultComboBoxFont: TFont read FDefaultSelectFont write SetDefaultSelectFont;
    property UseSkinFont: Boolean read FUseSkinFont write FUseSkinFont;
  end;

  TspSkinPagePreview = class;
  TspPageMeasureUnits = (sppmMillimeters, sppmInches);
  TspPageSetupDialogOption = (sppsoDisableMargins,
    sppsoDisableOrientation, sppsoDisablePaper, sppsoDisablePrinter);
  TspPageSetupDialogOptions = set of TspPageSetupDialogOption;

  TspSkinPageSetupDialog = class(TComponent)
  private
    FGroupBoxTransparentMode: Boolean;
    StopCheck: Boolean;
    RBPortrait, RBLandScape: TspSkinCheckRadioBox;
    SizeComboBox, SourceComboBox: TspSkinComboBox;
    LeftMEdit, TopMEdit, RightMEdit, BottomMEdit: TspSkinSpinEdit;
    PagePreview: TspSkinPagePreview;
    Bins, Papers: TStrings;
    //
    FUnits: TspPageMeasureUnits;
    FOptions: TspPageSetupDialogOptions;
    //
    FMinMarginLeft: Integer;
    FMinMarginTop: Integer;
    FMinMarginRight: Integer;
    FMinMarginBottom: Integer;

    FMaxMarginLeft: Integer;
    FMaxMarginTop: Integer;
    FMaxMarginRight: Integer;
    FMaxMarginBottom: Integer;

    FMarginLeft: Integer;
    FMarginTop: Integer;
    FMarginRight: Integer;
    FMarginBottom: Integer;
    FPageWidth, FPageHeight: Integer;
    //
    procedure RBPortraitClick(Sender: TObject);
    procedure RBLandScapeClick(Sender: TObject);
    procedure SizeComboBoxChange(Sender: TObject);
    procedure SourceComboBoxChange(Sender: TObject);

    procedure LeftMEditChange(Sender: TObject);
    procedure TopMEditChange(Sender: TObject);
    procedure RightMEditChange(Sender: TObject);
    procedure BottomMEditChange(Sender: TObject);

    procedure ClearPapersAndBins;
    procedure LoadPapersAndBins;
    procedure LoadCurrentPaperAndBin;
    procedure SaveCurrentPaperAndBin;
  protected
    Form: TForm;
    FSD: TspSkinData;
    FCtrlFSD: TspSkinData;
    FButtonSkinDataName: String;
    FSelectSkinDataName: String;
    FLabelSkinDataName: String;
    FDefaultLabelFont: TFont;
    FDefaultSelectFont: TFont;
    FDefaultButtonFont: TFont;
    FAlphaBlend: Boolean;
    FAlphaBlendValue: Byte;
    FAlphaBlendAnimation: Boolean;
    FUseSkinFont: Boolean;
    FTitle: String;
    procedure SetDefaultLabelFont(Value: TFont);
    procedure SetDefaultButtonFont(Value: TFont);
    procedure SetDefaultSelectFont(Value: TFont);
    function GetTitle: string;
    procedure SetTitle(const Value: string);
    procedure Notification(AComponent: TComponent;  Operation: TOperation); override;
    procedure PrinterButtonClick(Sender: TObject);
  public
    function Execute: Boolean;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    //
    property Options: TspPageSetupDialogOptions read FOptions write FOptions
      default [];
    property Units: TspPageMeasureUnits
      read FUnits write FUnits default sppmMillimeters;
    //
    property GroupBoxTransparentMode: Boolean
      read FGroupBoxTransparentMode write FGroupBoxTransparentMode;
    property MinMarginLeft: Integer read FMinMarginLeft write FMinMarginLeft;
    property MinMarginTop: Integer read FMinMarginTop write FMinMarginTop;
    property MinMarginRight: Integer read FMinMarginRight write FMinMarginRight;
    property MinMarginBottom: Integer read FMinMarginBottom write FMinMarginBottom;

    property MaxMarginLeft: Integer read FMaxMarginLeft write FMaxMarginLeft;
    property MaxMarginTop: Integer read FMaxMarginTop write FMaxMarginTop;
    property MaxMarginRight: Integer read FMaxMarginRight write FMaxMarginRight;
    property MaxMarginBottom: Integer read FMaxMarginBottom write FMaxMarginBottom;

    property MarginLeft: Integer read FMarginLeft write FMarginLeft;
    property MarginTop: Integer read FMarginTop write FMarginTop;
    property MarginRight: Integer read FMarginRight write FMarginRight;
    property MarginBottom: Integer read FMarginBottom write FMarginBottom;
    property PageWidth: Integer read FPageWidth write FPageWidth;
    property PageHeight: Integer read FPageHeight write FPageHeight;
    //
    property Title: string read GetTitle write SetTitle;
    property AlphaBlend: Boolean read FAlphaBlend write FAlphaBlend;
    property AlphaBlendValue: Byte read FAlphaBlendValue write FAlphaBlendValue;
    property AlphaBlendAnimation: Boolean
      read FAlphaBlendAnimation write FAlphaBlendAnimation;
    property SkinData: TspSkinData read FSD write FSD;
    property CtrlSkinData: TspSkinData read FCtrlFSD write FCtrlFSD;
    property ButtonSkinDataName: String read FButtonSkinDataName write FButtonSkinDataName;
    property LabelSkinDataName: String read FLabelSkinDataName write FLabelSkinDataName;
    property ComboboxSkinDataName: String read FSelectSkinDataName write FSelectSkinDataName;
    property DefaultLabelFont: TFont read FDefaultLabelFont write SetDefaultLabelFont;
    property DefaultButtonFont: TFont read FDefaultButtonFont write SetDefaultButtonFont;
    property DefaultComboBoxFont: TFont read FDefaultSelectFont write SetDefaultSelectFont;
    property UseSkinFont: Boolean read FUseSkinFont write FUseSkinFont;
  end;

  TspSkinPagePreview = class(TspSkinPanel)
  protected
    procedure CreateControlDefaultImage(B: TBitMap); override;
    procedure CreateControlSkinImage(B: TBitMap); override;
    procedure PaintTransparent(C: TCanvas); override;
  public
    PageWidth, PageHeight,
    LeftMargin, TopMargin, RightMargin, BottomMargin: Integer;
    constructor Create(AOwner: TComponent); override;
    procedure DrawPaper(R: TRect; Cnvs: TCanvas);
  end;


implementation

{$R SkinPrinter}

Uses spUtils, spConst, Printers, WinSpool, spMessages;

function GetStatusString(Status: DWORD): string;
begin
  case Status of
    0:
      Result := SP_PRNSTATUS_Ready;
    PRINTER_STATUS_PAUSED:
      Result := SP_PRNSTATUS_Paused;
    PRINTER_STATUS_PENDING_DELETION:
      Result := SP_PRNSTATUS_PendingDeletion;
    PRINTER_STATUS_BUSY:
      Result := SP_PRNSTATUS_Busy;
    PRINTER_STATUS_DOOR_OPEN:
      Result := SP_PRNSTATUS_DoorOpen;
    PRINTER_STATUS_ERROR:
      Result := SP_PRNSTATUS_Error;
    PRINTER_STATUS_INITIALIZING:
      Result := SP_PRNSTATUS_Initializing;
    PRINTER_STATUS_IO_ACTIVE:
      Result := SP_PRNSTATUS_IOActive;
    PRINTER_STATUS_MANUAL_FEED:
      Result := SP_PRNSTATUS_ManualFeed;
    PRINTER_STATUS_NO_TONER:
      Result := SP_PRNSTATUS_NoToner;
    PRINTER_STATUS_NOT_AVAILABLE:
      Result := SP_PRNSTATUS_NotAvailable;
    PRINTER_STATUS_OFFLINE:
      Result := SP_PRNSTATUS_OFFLine;
    PRINTER_STATUS_OUT_OF_MEMORY:
      Result := SP_PRNSTATUS_OutOfMemory;
    PRINTER_STATUS_OUTPUT_BIN_FULL:
      Result := SP_PRNSTATUS_OutBinFull;
    PRINTER_STATUS_PAGE_PUNT:
      Result := SP_PRNSTATUS_PagePunt;
    PRINTER_STATUS_PAPER_JAM:
      Result := SP_PRNSTATUS_PaperJam;
    PRINTER_STATUS_PAPER_OUT:
      Result := SP_PRNSTATUS_PaperOut;
    PRINTER_STATUS_PAPER_PROBLEM:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -