📄 upageset.pas
字号:
unit UPageSet;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,QuickRpt,QRPrntr, ComCtrls,Printers;
type
TfrmPageSet = class(TForm)
Label1: TLabel;
cbPrinter: TComboBox;
Label2: TLabel;
cbPaper: TComboBox;
GroupBox1: TGroupBox;
rbPortrait: TRadioButton;
rbOrientation: TRadioButton;
GroupBox2: TGroupBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
edtTop: TEdit;
udTop: TUpDown;
edtBottom: TEdit;
udBottom: TUpDown;
edtLeft: TEdit;
udLeft: TUpDown;
edtRight: TEdit;
udRight: TUpDown;
GroupBox3: TGroupBox;
rbAll: TRadioButton;
rbCurr: TRadioButton;
rbRange: TRadioButton;
edtRange: TEdit;
Label8: TLabel;
dbJO: TComboBox;
dbDuplex: TCheckBox;
Label9: TLabel;
edtCount: TEdit;
udCount: TUpDown;
Label10: TLabel;
btnOK: TButton;
btnCancel: TButton;
Label11: TLabel;
procedure btnCancelClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure rbRangeClick(Sender: TObject);
procedure rbCurrClick(Sender: TObject);
procedure rbAllClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure edtCountKeyPress(Sender: TObject; var Key: Char);
procedure edtRangeKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
procedure SetRangeEdit();
public
{ Public declarations }
qrt: TQuickRep;
end;
var
frmPageSet: TfrmPageSet;
implementation
{$R *.dfm}
procedure TfrmPageSet.btnCancelClick(Sender: TObject);
begin
Close;
end;
procedure TfrmPageSet.FormShow(Sender: TObject);
var
ss:TStrings;
begin
//填充打印机选择框
cbPrinter.Items.Assign(printer.Printers);
if cbPrinter.Items.Count>0 then
cbPrinter.ItemIndex:=0;
//纸型
if(qrt.Page.PaperSize =A3) then
cbPaper.ItemIndex:=0
else if(qrt.Page.PaperSize =A4) then
cbPaper.ItemIndex:=1
else if(qrt.Page.PaperSize =A4Small) then
cbPaper.ItemIndex:=2
else if(qrt.Page.PaperSize =A5) then
cbPaper.ItemIndex:=3
else if(qrt.Page.PaperSize =B4) then
cbPaper.ItemIndex:=4
else if(qrt.Page.PaperSize =B5) then
cbPaper.ItemIndex:=5
else if(qrt.Page.PaperSize =Folio) then
cbPaper.ItemIndex:=6
else if(qrt.Page.PaperSize =Quarto) then
cbPaper.ItemIndex:=7
else if(qrt.Page.PaperSize =qr10X14) then
cbPaper.ItemIndex:=8
else if(qrt.Page.PaperSize =qr11X17) then
cbPaper.ItemIndex:=9
else if(qrt.Page.PaperSize =Note) then
cbPaper.ItemIndex:=10
else if(qrt.Page.PaperSize =Env9) then
cbPaper.ItemIndex:=11
else if(qrt.Page.PaperSize =Env10) then
cbPaper.ItemIndex:=12
else if(qrt.Page.PaperSize =Env11) then
cbPaper.ItemIndex:=13
else if(qrt.Page.PaperSize =Env12) then
cbPaper.ItemIndex:=14
else if(qrt.Page.PaperSize =Env14) then
cbPaper.ItemIndex:=15
else if(qrt.Page.PaperSize =CSheet) then
cbPaper.ItemIndex:=16
else if(qrt.Page.PaperSize =DSheet) then
cbPaper.ItemIndex:=17
else if(qrt.Page.PaperSize =ESheet) then
cbPaper.ItemIndex:=18
else if(qrt.Page.PaperSize =Letter) then
cbPaper.ItemIndex:=19
else if(qrt.Page.PaperSize =LetterSmall) then
cbPaper.ItemIndex:=20
else if(qrt.Page.PaperSize =Tabloid) then
cbPaper.ItemIndex:=21
else if(qrt.Page.PaperSize =Ledger) then
cbPaper.ItemIndex:=22
else if(qrt.Page.PaperSize =Legal) then
cbPaper.ItemIndex:=23
else if(qrt.Page.PaperSize =Statement) then
cbPaper.ItemIndex:=24
else if(qrt.Page.PaperSize =Executive) then
cbPaper.ItemIndex:=25;
//方向
if qrt.Page.Orientation=poPortrait then
rbPortrait.Checked:=True//纵向
else
rbOrientation.Checked:=True;
//页边距
edtTop.Text:=trim(Format('%8f', [qrt.Page.TopMargin]));
edtBottom.Text:=trim(Format('%8f', [qrt.Page.BottomMargin]));
edtLeft.Text:=trim(Format('%8f', [qrt.Page.LeftMargin]));
edtRight.Text:=trim(Format('%8f', [qrt.Page.RightMargin]));
//双面打
dbDuplex.Checked:=qrt.PrinterSettings.Duplex;
//副本
edtCount.Text:=inttostr(qrt.PrinterSettings.Copies);
end;
procedure TfrmPageSet.SetRangeEdit();
begin
if rbRange.Checked then
edtRange.Enabled:=True
else
edtRange.Enabled:=False;
end;
procedure TfrmPageSet.rbRangeClick(Sender: TObject);
begin
SetRangeEdit();
end;
procedure TfrmPageSet.rbCurrClick(Sender: TObject);
begin
SetRangeEdit();
end;
procedure TfrmPageSet.rbAllClick(Sender: TObject);
begin
SetRangeEdit();
end;
procedure TfrmPageSet.btnOKClick(Sender: TObject);
begin
//打印机
qrt.Printer.PrinterIndex:=cbPrinter.ItemIndex;
//纸型
case cbPaper.ItemIndex of
0:qrt.Page.PaperSize:=A3;
1:qrt.Page.PaperSize:=A4;
2:qrt.Page.PaperSize:=A4Small;
3:qrt.Page.PaperSize:=A5;
4:qrt.Page.PaperSize:=B4;
5:qrt.Page.PaperSize:=B5;
6:qrt.Page.PaperSize:=Folio;
7:qrt.Page.PaperSize:=Quarto;
8:qrt.Page.PaperSize:=qr10X14;
9:qrt.Page.PaperSize:=qr11X17;
10:qrt.Page.PaperSize:=Note;
11:qrt.Page.PaperSize:=Env9;
12:qrt.Page.PaperSize:=Env10;
13:qrt.Page.PaperSize:=Env11;
14:qrt.Page.PaperSize:=Env12;
15:qrt.Page.PaperSize:=Env14;
16:qrt.Page.PaperSize:=CSheet;
17:qrt.Page.PaperSize:=DSheet;
18:qrt.Page.PaperSize:=ESheet;
19:qrt.Page.PaperSize:=Letter;
20:qrt.Page.PaperSize:=LetterSmall;
21:qrt.Page.PaperSize:=Tabloid;
22:qrt.Page.PaperSize:=Ledger;
23:qrt.Page.PaperSize:=Legal;
24:qrt.Page.PaperSize:=Statement;
25:qrt.Page.PaperSize:=Executive;
end;
//方向
if rbPortrait.Checked then
qrt.Page.Orientation:=poPortrait//纵向
else
qrt.Page.Orientation:=poLandscape;
//页边距
qrt.Page.TopMargin:=StrToFloat(trim(edtTop.Text));
qrt.Page.BottomMargin:=StrToFloat(trim(edtBottom.Text));
qrt.Page.LeftMargin:=StrToFloat(trim(edtLeft.Text));
qrt.Page.RightMargin:=StrToFloat(trim(edtRight.Text));
//双面打
qrt.PrinterSettings.Duplex:=dbDuplex.Checked;
//副本
qrt.PrinterSettings.Copies:=strtoint(trim(edtCount.Text));
Close;
end;
procedure TfrmPageSet.edtCountKeyPress(Sender: TObject; var Key: Char);
begin
if not(((key<='9') and (key>='0'))or(key=#8)) then abort;
end;
procedure TfrmPageSet.edtRangeKeyPress(Sender: TObject; var Key: Char);
begin
if not(((key<='9') and (key>='0'))or(key=#8)or(key=',')or(key='-')) then abort;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -