📄 skinprinter.pas
字号:
{*******************************************************************}
{ }
{ 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 + -