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

📄 vprinter.pas

📁 日昌餐饮管理系统是用Delphi7+SQL写的管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
           writefile(hcom,display,hxqlen,sendnumber,nil);
         end;
         selport.Next;
  end;
  selport.First;
  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);
  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.initprt(port:string;disp_info:string):integer;
 var
   comport_display:string;
   hcom:Thandle;
   lpdcb:Tdcb;
   sendnumber:dword;
   display:string[48];
   hxqlen,ii:integer;
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);
  disp_info:=dwmc+port+'打印机测试';
  display:=#27#97#1+disp_info+#27#64;
  hxqlen:=length(display);
  writefile(hcom,display,hxqlen,sendnumber,nil);
  closehandle(hcom);
  truc(comport_display,'');
  result:=0;
end;
function Tform1.truc(port:string;disp_info:string):integer;
 var
   comport_display:string;
   hcom:Thandle;
   lpdcb:Tdcb;
   sendnumber:dword;
   display:string[40];
begin
  //票打切纸
  comport_display:=port;
  hcom:=createfile(pchar(comport_display), generic_write,0,Nil,open_always,
            file_attribute_normal,0);

  getcommstate(hcom,lpdcb);
  lpdcb.baudrate:=9600;
  if lpdcb.ByteSize=7 then lpdcb.ByteSize:=8;
  setcommstate(hcom,lpdcb);
  display:=#27#97+#6+disp_info+ #13;
  writefile(hcom,display,length(display)+1,sendnumber,nil);
  display:=#27#100+#1;
  writefile(hcom,display,length(display)+1,sendnumber,nil);
  closehandle(hcom);
  result:=0;
end;

procedure TForm1.FormCreate(Sender: TObject);
var dwSize:DWord;
    flnm:string;
    lpBuffer: array[0..MAX_PATH] of char;
begin
     if not rjsado.Connected then
     begin
       flnm:=ExtractFilePath(Application.ExeName)+'rjscygl.udl';
       rjsado.ConnectionString:='FILE NAME='+flnm;
       RJSADO.Connected:=true;
     end;
     dwSize:= MAX_PATH;
     if not GetComputerName(lpBuffer, dwSize) then
        raise Exception.Create(SysErrorMessage(GetLastError()));
      computer_name:= StrPas(lpBuffer);
     form1.WindowState:=wsminimized;
     adoquery3.Open;
     dwmc:=adoquery3.FieldByName('GS_OFFICE').AsString;
     adoquery3.Close;
     adoquery2.Close;
     adoquery2.SQL.Clear;
     adoquery2.SQL.Add('select * from prtset where port like '+''''+'%'+computer_name+'%'+'''');
     adoquery2.Open;
     while not adoquery2.Eof do
     begin
       initprt(adoquery2.FieldByName('port').AsString,'');
       adoquery2.Next;
     end;
     adoquery2.Close;
     timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
     timer1.Enabled:=false;
     adoquery2.Open;
     while not adoquery2.Eof do
     begin
       adoquery1.Close;
       adoquery1.Open;
       while not adoquery1.Eof do
       begin
         djh:=adoquery1.FieldByName('djh').AsString;
         prtno:=adoquery2.FieldByName('bh').AsString;
         Button2Click(sender);
         Button3Click(sender);
         adoquery1.Next;
       end;
       adoquery1.Close;
       adoquery2.Next;
     end;
     adoquery2.Close;
     timer1.Enabled:=true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//
       prtsetq.Close;
       prtsetq.SQL.Clear;
       prtsetq.SQL.Add('select * from prtset where type='+''''+'S'+''''+' and port like '+''''+'%'+computer_name+'%'+''''+' order by bh');
       prtsetq.Open;
       if prtsetq.RecordCount>0 then
       begin
           pprrtt:='';
           writ(prtsetq.fieldbyname('port').AsString,'');
       end;
       prtsetq.Close;
end;

procedure TForm1.Button3Click(Sender: TObject);
var dyj:string;
begin
//通过系统设置打印到传菜间
     prtsetq.Close;
     prtsetq.SQL.Clear;
     prtsetq.SQL.Add('select * from prtset where type='+''''+'P'+''''+' and port like '+''''+'%'+computer_name+'%'+'''' +' order by bh');
     prtsetq.Open;
     while not prtsetq.Eof do
     begin
        prtq.Close;
        prtq.SQL.Clear;
        prtq.SQL.Add('select ccjdyjhm from dcddy where djh=:cs1 and ccjdyjhm=:cs2 group by ccjdyjhm order by ccjdyjhm');
        prtq.Parameters.ParamByName('cs1').Value:=djh;
        prtq.Parameters.ParamByName('cs2').Value:=prtsetq.FieldByName('bh').Value;
        prtq.Open;
        if prtq.RecordCount>0 then
        begin
          pprrtt:='ccjdyjhm';
          dyj:=prtsetq.FieldByName('port').AsString;
          prtno:=prtq.Fieldbyname('ccjdyjhm').AsString;
          writ(dyj,'');
        end;
        prtsetq.Next;
      end;
      prtq.Close;
      prtsetq.Close;
//
     prtsetq.Close;
     prtsetq.SQL.Clear;
     prtsetq.SQL.Add('select * from prtset where type='+''''+'C'+''''+' and port like '+''''+'%'+computer_name+'%'+''''+' order by bh');
     prtsetq.Open;
     while not prtsetq.Eof do
     begin
        prtq.Close;
        prtq.SQL.Clear;
        prtq.SQL.Add('select id from dcddy where djh=:cs1 and cfdyjhm=:cs2 and type='+''''+'CF'+'''');
        prtq.Parameters.ParamByName('cs1').Value:=djh;
        prtq.Parameters.ParamByName('cs2').Value:=prtsetq.FieldByName('bh').Value;
        prtq.Open;
        if prtq.RecordCount>0 then
        begin
        while not prtq.Eof do
         begin
          pprrtt:=prtq.Fieldbyname('id').AsString;
          dyj:=prtsetq.FieldByName('port').AsString;
          writcf(dyj,'');
          prtq.Next;
         end;
        end;
        prtsetq.Next;
      end;
      prtq.Close;
      prtsetq.Close;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     timer1.Enabled:=false;
     rjsado.Connected:=false;
end;

end.

⌨️ 快捷键说明

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