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

📄 outmoney.pas

📁 彩票销售系统
💻 PAS
字号:
unit OutMoney;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, Grids, DBGrids, ExtCtrls, StdCtrls, Buttons, ToolWin,Printers,
  ComCtrls;

type
  TOutMoney_from = class(TForm)
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Panel1: TPanel;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    OutMoney_q: TADOQuery;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  OutMoney_from: TOutMoney_from;

implementation
  uses NumberManger;
{$R *.dfm}

procedure TOutMoney_from.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  action:=cafree;
end;

procedure TOutMoney_from.BitBtn2Click(Sender: TObject);
begin
  close;
end;

procedure TOutMoney_from.FormShow(Sender: TObject);
begin
  OutMoney_q.close;
  OutMoney_q.OPen;
end;

procedure TOutMoney_from.BitBtn1Click(Sender: TObject);
const 
  LeftBlank=1;//定义页边距单位厘米
  RightBlank=1;
  TopBlank=2;
  BottomBlank=3;

var
  PointX,PointY,lx,ly:integer;
  PointScale,PrintStep:integer;
  s:string;
  x,y,y1:integer;
  i,j:integer;
  print_ti:boolean;
  comno:string;
begin
  print_ti:=false;
  comno:='hl00';
  //获取当前打印机的分辨率
  PointX:=Trunc(GetDeviceCaps(Printer.Handle,LOGPIXELSX)/2.54);
  PointY:=Trunc(GetDeviceCaps(Printer.Handle,LOGPIXELSY)/2.54);
  //根据打印机和屏幕的分辨率计算出从屏幕转换到打印机的比例
  PointScale:=Trunc(GetDeviceCaps(Printer.Handle,LOGPIXELSX)/Screen.PixelsPerInch+0.5);
  j:=0;
  //横向打印
  for i:=0 to DBGrid1.FieldCount-1 do
  begin
    if DBGrid1.Columns[i].Visible then
    begin
      j:=j+1;
    end;
  end;
  if j<10 then
    printer.Orientation:=poPortrait
  else
    printer.Orientation:=poLandscape;
  //打印的字体和大小
  printer.Canvas.Font.Name:='宋体';
  printer.canvas.Font.Size:=14;
  //根据字体的大小确定每行的高度
  s:='有限公司';
  PrintStep:=printer.canvas.TextHeight(s)+26;
  //打印的起点位置
  x:=PointX*LeftBlank;
  y:=PointY*TopBlank;
  ly:=PointY*TopBlank+100;
  //DataSource1是DBGrid1所连接的数据源
  if ((DataSource1.DataSet).Active=true) and ((DataSource1.DataSet).RecordCount>0) then
  begin
     printer.BeginDoc;
    (DataSource1.DataSet).First;
    while not (DataSource1.DataSet).Eof do
    begin //打印DBGrid中的所有列
      for i:=0 to DBGrid1.FieldCount-1 do
      begin
        if DBGrid1.Columns[i].Visible then
        begin
        //假如所要打印的列超出了打印范围,则忽略该列
          if (x+DBGrid1.Columns.Items[i].Width*PointScale)<=(Printer.PageWidth-PointX*RightBlank)then
          begin //画表格线
            //**打印标题**//
            if y=PointY*TopBlank then
            begin
            if not print_ti then
            begin
              printer.Canvas.Font.Name:='宋体';
              printer.canvas.Font.Size:=18;
              comno:='                                     出口明细表 ' ;
              Printer.Canvas.TextOut(x+60,y-160,comno);
              printer.Canvas.Font.Name:='宋体';
              printer.canvas.Font.Size:=14;
              comno:='期号:'+saleperiod+'              打印时间:'+DateToStr(Date);
              printer.Canvas.TextOut(x,y-20,comno);
              print_ti:=true;
              y:=y+100;
            end;
            end;
            Printer.Canvas.Rectangle(x,y-8,x+DBGrid1.Columns.Items[i].Width*PointScale,y+PrintStep);
            if y=ly then
            begin
              printer.Canvas.Font.Name:='宋体';
              printer.canvas.Font.Size:=14;
              Printer.Canvas.TextOut(x+8,y,DBGrid1.Columns[i].Title.Caption);
            end
          else
            begin
              printer.Canvas.Font.Name:='宋体';
              printer.canvas.Font.Size:=14;
              Printer.Canvas.TextOut(x+8,y,DBGrid1.Fields[i].asString);
            end;
          end;
          //计算下一列的横坐标
          x:=x+DBGrid1.Columns.Items[i].Width*PointScale;
        end;
      end;
      //if not (y=PointY*TopBlank) then (DataSource1.DataSet).next;
      if not (y=ly) then (DataSource1.DataSet).next;
      x:=PointX*LeftBlank;
      y:=y+PrintStep; //换页
      if (y+PrintStep)>(Printer.PageHeight-PointY*BottomBlank) then
      begin
        Printer.NewPage;
        y:=PointY*TopBlank;
        print_ti:=false;
      end;
    end;
    printer.Canvas.Font.Name:='宋体';
    printer.canvas.Font.Size:=14;
    //comno:='共'+IntToStr(emppaylistsp.RecordCount)+'条记录';
    Printer.Canvas.TextOut(x+60,y+60,comno);
    printer.EndDoc;
    Application.MessageBox('打印完成','打印',32);
    (DataSource1.DataSet).First;
   end ;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -