实现打印功能

unit UPrint;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls,Printers;//Printers

type
  TFPrint = class(TForm)
    PrinterSetupDialog1: TPrinterSetupDialog;
    PrintDialog1: TPrintDialog;
    BPrint: TButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    BSet: TButton;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    procedure BPrintClick(Sender: TObject);
    procedure BSetClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FPrint: TFPrint;

implementation

{$R *.dfm}

procedure TFPrint.FormCreate(Sender: TObject);
begin
   TabSheet1.Caption :='页面一';
   TabSheet2.Caption :='页面二';
   TabSheet3.Caption :='页面三';
   TabSheet4.Caption :='页面四';

   BSet.Caption :='页面设置...';
   BPrint.Caption :='打印...';
end;

procedure TFPrint.BSetClick(Sender: TObject);
begin
   PrinterSetupDialog1.Execute;
end;

procedure TFPrint.BPrintClick(Sender: TObject);
var
  FirstPage, LastPage: Integer;
  i:integer;
begin
  //设置打印对话框的选项
  PrintDialog1.Options := [poPageNums, poSelection];
  PrintDialog1.FromPage := 1;
  PrintDialog1.MinPage := 1;
  PrintDialog1.ToPage := PageControl1.PageCount;
  PrintDialog1.MaxPage := PageControl1.PageCount;
  //显示打印对话框
  if PrintDialog1.Execute then
    begin
    //确定用户所选择的打印范围
    with PrintDialog1 do 
    begin
      if PrintRange = prAllPages then
        begin
            FirstPage := MinPage - 1;
            LastPage := MaxPage - 1;
        end
      else if PrintRange = prSelection then
        begin
            FirstPage := PageControl1.ActivePage.PageIndex;
            LastPage := FirstPage;
          end
      else  // PrintRange = prPageNums 的情况
        begin
            FirstPage := FromPage - 1;
            LastPage := ToPage - 1;
        end;
    end;

    //开始打印
    with Printer do
    begin
      BeginDoc;
      for i := FirstPage to LastPage do
      begin
        PageControl1.Pages[I].PaintTo(Handle, 10, 10);
        if i <> LastPage then
          NewPage;
      end;
      EndDoc;
    end;
  end;
end;

end.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值