?? bsskinprinter.pas
字號(hào):
{*******************************************************************}
{ }
{ Almediadev Visual Component Library }
{ BusinessSkinForm }
{ Version 6.07 }
{ }
{ Copyright (c) 2000-2007 Almediadev }
{ ALL RIGHTS RESERVED }
{ }
{ Home: http://www.almdev.com }
{ Support: support@almdev.com }
{ }
{*******************************************************************}
unit bsSkinPrinter;
interface
uses Windows, SysUtils, Messages, Classes, Graphics, Controls, Forms,
BusinessSkinForm, bsSkinData, bsSkinCtrls, bsSkinBoxCtrls, Dialogs,
StdCtrls, ExtCtrls, bsEffects;
type
TbsPrintRange = (bsprAllPages, bsprSelection, bsprPageNums);
TbsPrintDialogOption = (bspoPrintToFile, bspoPageNums, bspoSelection,
bspoDisablePrintToFile);
TbsPrintDialogOptions = set of TbsPrintDialogOption;
TbsSkinPrintDialog = class(TComponent)
private
PrinterCombobox: TbsSkinComboBox;
L1, L2, L3, L4: TbsSkinStdLabel;
NumCopiesEdit: TbsSkinSpinEdit;
CollateCheckBox: TbsSkinCheckRadioBox;
StopCheck: Boolean;
CollateImage: TImage;
RBAll, RBPages, RBSelection: TbsSkinCheckRadioBox;
FromPageEdit, ToPageEdit: TbsSkinSpinEdit;
PrintToFileCheckBox: TbsSkinCheckRadioBox;
FGroupBoxTransparentMode: Boolean;
protected
Form: TForm;
FSD: TbsSkinData;
FCtrlFSD: TbsSkinData;
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: TbsPrintDialogOptions;
FPrintToFile: Boolean;
FPrintRange: TbsPrintRange;
FMinPage: Integer;
FMaxPage: Integer;
FCopies: Integer;
procedure SetNumCopies(Value: Integer);
//
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);
procedure FromPageEditChange(Sender: TObject);
procedure ToPageEditChange(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: TbsSkinData read FSD write FSD;
property CtrlSkinData: TbsSkinData 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: TbsPrintDialogOptions read FOptions write FOptions default [];
property PrintToFile: Boolean read FPrintToFile write FPrintToFile default False;
property PrintRange: TbsPrintRange read FPrintRange write FPrintRange default bsprAllPages;
property ToPage: Integer read FToPage write FToPage default 0;
//
end;
TbsPaperInfo = class
private
FDMPaper: Integer;
FName: string;
FSize: TPoint;
function GetSize(Index: Integer): Integer;
procedure SetSize(Index: Integer; Value: Integer);
public
procedure Assign(Source: TbsPaperInfo);
function IsEqual(Source: TbsPaperInfo): 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;
TbsSkinPrinterSetupDialog = class(TComponent)
private
StopCheck: Boolean;
PrinterCombobox: TbsSkinComboBox;
L1, L2, L3, L4: TbsSkinStdLabel;
RBPortrait, RBLandScape: TbsSkinCheckRadioBox;
OrientationImage: TImage;
SizeComboBox, SourceComboBox: TbsSkinComboBox;
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: TbsSkinData;
FCtrlFSD: TbsSkinData;
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: TbsSkinData read FSD write FSD;
property CtrlSkinData: TbsSkinData 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;
TbsSkinSmallPrintDialog = class(TComponent)
protected
FGroupBoxTransparentMode: Boolean;
Form: TForm;
FSD: TbsSkinData;
FCtrlFSD: TbsSkinData;
FButtonSkinDataName: String;
FSelectSkinDataName: String;
FLabelSkinDataName: String;
FDefaultLabelFont: TFont;
FDefaultSelectFont: TFont;
FDefaultButtonFont: TFont;
FAlphaBlend: Boolean;
FAlphaBlendValue: Byte;
FAlphaBlendAnimation: Boolean;
FUseSkinFont: Boolean;
FTitle: String;
PrinterCombobox: TbsSkinComboBox;
L1, L2, L3, L4: TbsSkinStdLabel;
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: TbsSkinData read FSD write FSD;
property CtrlSkinData: TbsSkinData 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;
TbsSkinPagePreview = class;
TbsPageMeasureUnits = (bspmMillimeters, bspmInches);
TbsPageSetupDialogOption = (bspsoDisableMargins,
bspsoDisableOrientation, bspsoDisablePaper, bspsoDisablePrinter);
TbsPageSetupDialogOptions = set of TbsPageSetupDialogOption;
TbsSkinPageSetupDialog = class(TComponent)
private
FGroupBoxTransparentMode: Boolean;
StopCheck: Boolean;
RBPortrait, RBLandScape: TbsSkinCheckRadioBox;
SizeComboBox, SourceComboBox: TbsSkinComboBox;
LeftMEdit, TopMEdit, RightMEdit, BottomMEdit: TbsSkinSpinEdit;
PagePreview: TbsSkinPagePreview;
Bins, Papers: TStrings;
//
FUnits: TbsPageMeasureUnits;
FOptions: TbsPageSetupDialogOptions;
//
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: TbsSkinData;
FCtrlFSD: TbsSkinData;
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 GroupBoxTransparentMode: Boolean
read FGroupBoxTransparentMode write FGroupBoxTransparentMode;
//
property Options: TbsPageSetupDialogOptions read FOptions write FOptions
default [];
property Units: TbsPageMeasureUnits
read FUnits write FUnits default bspmMillimeters;
//
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: TbsSkinData read FSD write FSD;
property CtrlSkinData: TbsSkinData 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;
TbsSkinPagePreview = class(TbsSkinPanel)
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 bsSkinPrinter}
Uses bsUtils, bsConst, Printers, WinSpool, bsMessages;
function GetStatusString(Status: DWORD): string;
begin
case Status of
0:
Result := BS_PRNSTATUS_Ready;
PRINTER_STATUS_PAUSED:
Result := BS_PRNSTATUS_Paused;
PRINTER_STATUS_PENDING_DELETION:
Result := BS_PRNSTATUS_PendingDeletion;
PRINTER_STATUS_BUSY:
Result := BS_PRNSTATUS_Busy;
PRINTER_STATUS_DOOR_OPEN:
Result := BS_PRNSTATUS_DoorOpen;
PRINTER_STATUS_ERROR:
Result := BS_PRNSTATUS_Error;
PRINTER_STATUS_INITIALIZING:
Result := BS_PRNSTATUS_Initializing;
PRINTER_STATUS_IO_ACTIVE:
Result := BS_PRNSTATUS_IOActive;
PRINTER_STATUS_MANUAL_FEED:
Result := BS_PRNSTATUS_ManualFeed;
PRINTER_STATUS_NO_TONER:
Result := BS_PRNSTATUS_NoToner;
PRINTER_STATUS_NOT_AVAILABLE:
Result := BS_PRNSTATUS_NotAvailable;
PRINTER_STATUS_OFFLINE:
Result := BS_PRNSTATUS_OFFLine;
PRINTER_STATUS_OUT_OF_MEMORY:
Result := BS_PRNSTATUS_OutOfMemory;
PRINTER_STATUS_OUTPUT_BIN_FULL:
Result := BS_PRNSTATUS_OutBinFull;
PRINTER_STATUS_PAGE_PUNT:
Result := BS_PRNSTATUS_PagePunt;
PRINTER_STATUS_PAPER_JAM:
Result := BS_PRNSTATUS_PaperJam;
PRINTER_STATUS_PAPER_OUT:
Result := BS_PRNSTATUS_PaperOut;
PRINTER_STATUS_PAPER_PROBLEM:
Result := BS_PRNSTATUS_PaperProblem;
PRINTER_STATUS_PRINTING:
Result := BS_PRNSTATUS_Printing;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -