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

📄 vprinter.pas

📁 日昌餐饮管理系统是用Delphi7+SQL写的管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit vprinter;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    selport: TADOQuery;
    rjsado: TADOConnection;
    Timer1: TTimer;
    Button2: TButton;
    prtsetQ: TADOQuery;
    Button3: TButton;
    prtQ: TADOQuery;
    ADOQuery1: TADOQuery;
    ADOQuery2: TADOQuery;
    selportID: TAutoIncField;
    selportdjh: TIntegerField;
    selportyhh: TStringField;
    selporttwbh: TStringField;
    selportrq: TDateTimeField;
    selportmc: TStringField;
    selportgg: TStringField;
    selportdj: TBCDField;
    selportsl: TBCDField;
    selportje: TBCDField;
    selportfkbz: TBooleanField;
    selportzfbz: TBooleanField;
    selportzsbz: TBooleanField;
    selportcfdyjhm: TStringField;
    selportccjdyjhm: TStringField;
    selporttype: TStringField;
    ADOQuery3: TADOQuery;
    selportmemo: TStringField;
    procedure Button1Click(Sender: TObject);
    function writ(port:string;disp_info:string):integer;
    function writcf(port:string;disp_info:string):integer;
    function truc(port:string;disp_info:string):integer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    function initprt(port:string;disp_info:string):integer;
  private
    computer_name:string;
    pprrtt,prtno,djh:string;
    dwmc:string;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
     close;
end;
function Tform1.writ(port:string;disp_info:string):integer;
 var
   comport_display:string;
   hcom:Thandle;
   lpdcb:Tdcb;
   sendnumber:dword;
   display:string[48];
   hxqlen,ii:integer;
   xxjj:real;
begin
   //票打驱动   收银或送菜间
  if pos(computer_name,port)>0 then
  begin
    ii:=pos(computer_name,port);
    comport_display:=copy(port,1,ii-1)+'.'+copy(port,ii+length(computer_name),length(port));
  end
  else comport_display:=port;
  hxqlen:=0;
  while comport_display=comport_display do
  begin
   hcom:=createfile(pchar(comport_display), generic_write,0,Nil,OPEN_EXISTING,
            file_attribute_normal,0);
   if hcom<>4294967295 then break;
   hxqlen:=hxqlen+1;
   if hxqlen>1000 then
    begin
     messagedlg('打开 '+comport_display+'端口失败!'+#13+'请检查打印机及其线路!',mtwarning,[mbok],0);
     exit;
    end;
  end;
  getcommstate(hcom,lpdcb);
  lpdcb.baudrate:=9600;
  lpdcb.DCBlength:=48;
  lpdcb.Parity:=0;
  lpdcb.ByteSize:=8;
  lpdcb.StopBits:=1;
  lpdcb.XonLim:=2048;
  lpdcb.XoffLim:=512;
  lpdcb.XonChar:=#17;
  lpdcb.XoffChar:=#19;
  setcommstate(hcom,lpdcb);
  if selport.Active then selport.Close;
  selport.SQL.Clear;
  if pprrtt='' then selport.SQL.Add('select * from dcddy where (djh = :cs1) and type='+''''+'SY'+'''')
  else begin
    selport.SQL.Add('select * from dcddy where (djh = :cs1) and ('+pprrtt+'=:cs2) and type='+''''+'CC'+'''');
    selport.Parameters.ParamByName('cs2').Value:=prtno;
  end;
  selport.Parameters.ParamByName('cs1').Value:=djh;
  selport.Open;
if selport.RecordCount>0 then
begin
{  hxqlen:=length(dwmc);
  disp_info:=copy('           ',1,10 - round(hxqlen/2))+dwmc;//'         罗杰斯餐饮连锁机构';
  display:=#27#97#1+disp_info+#27#64;
  hxqlen:=length(display);
  writefile(hcom,display,hxqlen,sendnumber,nil);
  disp_info:=datetimetostr(date+time)+' 单号:'+selportdjh.AsString+' ';
}
  if pprrtt='' then disp_info:='单号:'+selportdjh.AsString+'       '+datetimetostr(date+time)
  else disp_info:='单号:'+selportdjh.AsString+' (传菜)'+datetimetostr(date+time);
  display:=#27#97#1+disp_info+#27#64;
  hxqlen:=length(display);
  writefile(hcom,display,hxqlen,sendnumber,nil);
  disp_info:=' 餐台号:'+selporttwbh.AsString;
  display:=#27#97#1+disp_info+#27#64;
  hxqlen:=length(display);
  writefile(hcom,display,hxqlen,sendnumber,nil);
  disp_info:='-----------------------------------';
  display:=#27#97#1+disp_info+#27#64;
  hxqlen:=length(display);
  writefile(hcom,display,hxqlen,sendnumber,nil);
  disp_info:='序号   商 品 名 称   数量 单价 金额';
  display:=#27#97#1+disp_info+#27#64;
  hxqlen:=length(display);
  writefile(hcom,display,hxqlen,sendnumber,nil);
  ii:=1;
  xxjj:=0;
  while not selport.Eof do
     begin
//    以下为打印正文
         if ii<10 then disp_info:=' '+copy(inttostr(ii),1,1)+' '
            else disp_info:=copy(inttostr(ii),1,2)+' ';
         disp_info:=disp_info +copy(selportmc.AsString,1,18)+copy('                ',1,18-length(selportmc.AsString));
         disp_info:=disp_info+copy(' ',1,2-length(selportsl.AsString)) +selportsl.AsString;
         disp_info:=disp_info+copy('     ',1,5-length(selportdj.AsString)) +selportdj.AsString;
         disp_info:=disp_info+copy('     ',1,5-length(selportje.AsString))+selportje.AsString+'元';
         if selportzfbz.AsBoolean then disp_info:=disp_info+'退';
         display:=#27#97#1+disp_info+#27#64;
         hxqlen:=length(display);
         writefile(hcom,display,hxqlen,sendnumber,nil);
         xxjj:=xxjj+selportje.AsFloat;
         ii:=ii+1;
         selport.Next;
  end;
// 打印页尾
  disp_info:='-----------------------------------';
  display:=#27#97#1+disp_info+#27#64;
  hxqlen:=length(display);
  writefile(hcom,display,hxqlen,sendnumber,nil);
  if pprrtt='' then
  begin
    disp_info:=' 收银: '+copy(selportyhh.AsString,1,6)+' ';
    disp_info:=disp_info+'          合计: '+ floattostr(xxjj)+'元';
    display:=#27#64+#27#97#1+disp_info+#27#64;
    hxqlen:=length(display);
    writefile(hcom,display,hxqlen,sendnumber,nil);
  end;
  selport.First;
  while not selport.Eof do selport.Delete;
  selport.Close;
  closehandle(hcom);
  truc(comport_display,'');
end
else begin
  selport.Close;
  closehandle(hcom);
end;
  result:=0;
end;
//
function Tform1.writcf(port:string;disp_info:string):integer;
 var
   comport_display:string;
   hcom:Thandle;
   lpdcb:Tdcb;
   sendnumber:dword;
   display:string[48];
   hxqlen,ii:integer;
   xxjj:real;
begin
   //票打驱动   厨房
  if pos(computer_name,port)>0 then
  begin
    ii:=pos(computer_name,port);
    comport_display:=copy(port,1,ii-1)+'.'+copy(port,ii+length(computer_name),length(port));
  end
  else comport_display:=port;
  hxqlen:=0;
  while comport_display=comport_display do
  begin
   hcom:=createfile(pchar(comport_display), generic_write,0,Nil,OPEN_EXISTING,
            file_attribute_normal,0);
   if hcom<>4294967295 then break;
   hxqlen:=hxqlen+1;
   if hxqlen>1000 then
    begin
     messagedlg('打开 '+comport_display+'端口失败!'+#13+'请检查打印机及其线路!',mtwarning,[mbok],0);
     exit;
    end;
  end;
  getcommstate(hcom,lpdcb);
  lpdcb.baudrate:=9600;
  lpdcb.DCBlength:=48;
  lpdcb.Parity:=0;
  lpdcb.ByteSize:=8;
  lpdcb.StopBits:=1;
  lpdcb.XonLim:=2048;
  lpdcb.XoffLim:=512;
  lpdcb.XonChar:=#17;
  lpdcb.XoffChar:=#19;
  setcommstate(hcom,lpdcb);
  if selport.Active then selport.Close;
  selport.SQL.Clear;
  selport.SQL.Add('select * from dcddy where id = :cs1 and type='+''''+'CF'+'''');
  selport.Parameters.ParamByName('cs1').Value:=pprrtt;
  selport.Open;
if selport.RecordCount>0 then
begin
{  hxqlen:=length(dwmc);
  disp_info:=copy('           ',1,10 - round(hxqlen/2))+dwmc;
  display:=#27#97#1+disp_info+#27#64;
  hxqlen:=length(display);
  writefile(hcom,display,hxqlen,sendnumber,nil);
  disp_info:=datetimetostr(date+time)+' 单号:'+selportdjh.AsString+' ';
  display:=#27#97#1+disp_info+#27#64;
  hxqlen:=length(display);
  writefile(hcom,display,hxqlen,sendnumber,nil);
}  disp_info:='台号:'+selporttwbh.AsString+'(厨房)'+datetimetostr(date+time);
  display:=#27#97#1+disp_info+#27#64;
  hxqlen:=length(display);
  writefile(hcom,display,hxqlen,sendnumber,nil);
  while not selport.Eof do
     begin
//    以下为打印加工描述
         if not selportmemo.IsNull then
         begin
           display:=#27#97#1+selportmemo.AsString+#27#64;
           hxqlen:=length(display);

⌨️ 快捷键说明

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