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

📄 upageset.pas

📁 delphi下自制报表预览的例子,还不完善,如果有疑问,给作者写信,
💻 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 + -