谁有DELPHI关于票据打印的源程序 最好带有动态设置打印位置 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我写的双向打印的procedure _PrintBill;Const DocumentTitle = 'AW';var hPrinter: DWord; DocInfo: TDocInfo1; dwJob: Integer; dwBytesWritten: DWord; PrinterName: string; DocumentData: string; procedure PrintError; begin raise ERAWPrintError.Create(Format(errPrintError, [DocumentTitle])); end;begin PrinterName:= _DefaultPrinter; if not OpenPrinter(PChar(PrinterName), hPrinter, nil) then raise ERAWPrintErrorPrinterName.Create(Format(errOpenPrinter, [PrinterName])); try DocInfo.pOutputFile:= nil; DocInfo.pDatatype:= 'RAW'; DocInfo.pDocName:= PChar(DocumentTitle); dwJob:= StartDocPrinter(hPrinter, 1, @DocInfo); if (dwJob=0) then PrintError; try if not StartPagePrinter(hPrinter) then PrintError; try DocumentData :=#10+#10+#10+#10+' '+r_SysInfo.StationName; DocumentData :=DocumentData + #10+' '+_getrmb(strtoint(vartostr(Carprice)))+' '+vartostr(Carprice)+'元'; DocumentData :=DocumentData + #10+#10+' '+inttostr(r_TradeInfo.WayNo) + ' ' + formatfloat('000000',r_Userinfo.No)+ ' '+formatfloat('00000000',r_UserInfo.CurrentBillNo-1); DocumentData :=DocumentData + #10+#10+' '+datetimetostr(date)+ ' '+timetostr(time); DocumentData :=DocumentData + #10+#10+#10+#10+#10+#10; //换行 if not WritePrinter(hPrinter, Pointer(DocumentData), Length(DocumentData), dwBytesWritten) then PrintError; if (LongInt(dwBytesWritten)<Length(DocumentData)) then PrintError; finally if not EndPagePrinter(hPrinter) then PrintError; end; finally if not EndDocPrinter(hPrinter) then PrintError; end; finally ClosePrinter(hPrinter); end;end; 我写的图形打印,可以控制位置的uses printers Try //图形打印 with printer do begin BeginDoc; //开始一个打印任务 Canvas.Font.Size :=12; //设置打印的字体 Canvas.TextOut (150,55,r_SysInfo.StationName); //在150,50位置打出收费站名称 Canvas.TextOut (170,70,_getrmb(strtoint(vartostr(CarPrice)))); Canvas.TextOut (330,70,vartostr(CarPrice)+'元'); Canvas.TextOut (120,85,inttostr(r_TradeInfo.WayNo)); Canvas.TextOut (190,85,formatfloat('000000',r_Userinfo.No)); Canvas.TextOut (300,85,copy(datetimetostr(now()),3,2)+formatfloat('00000000',r_UserInfo.CurrentBillNo-1)); Canvas.TextOut (120,100,datetimetostr(date())); Canvas.TextOut (300,100,timetostr(time) ); end; Finally printer.EndDoc; //结束一个打印任务 end; 三层数据库 中文搜索不显示 我们菜,但我们很努力!--写给和我一样的菜鸟们 WebBrowser问什么在多线程中获取不到网页原码? 紧急的简单问题!!快回!!谢谢。 关于打印内容混乱的问题! 李维到CSDN的聊天室了吗? 请问这个函数是什么意思:GetUserDefaultLCID()? fastreport问题之二:在报表中添加一个交叉报表预览时总提示:'GroupFooter1' is not a valid integer value;不知何故? String的长度最大有多大啊? 请问如何得知一个汉字是那两个字节组成的 在DbGrid1中如何让字段以*显示? 一个奇怪的问题
procedure _PrintBill;
Const
DocumentTitle = 'AW';
var hPrinter: DWord;
DocInfo: TDocInfo1;
dwJob: Integer;
dwBytesWritten: DWord;
PrinterName: string;
DocumentData: string;
procedure PrintError;
begin
raise ERAWPrintError.Create(Format(errPrintError, [DocumentTitle]));
end;
begin
PrinterName:= _DefaultPrinter;
if not OpenPrinter(PChar(PrinterName), hPrinter, nil) then
raise ERAWPrintErrorPrinterName.Create(Format(errOpenPrinter, [PrinterName]));
try
DocInfo.pOutputFile:= nil;
DocInfo.pDatatype:= 'RAW';
DocInfo.pDocName:= PChar(DocumentTitle);
dwJob:= StartDocPrinter(hPrinter, 1, @DocInfo);
if (dwJob=0) then PrintError;
try
if not StartPagePrinter(hPrinter) then PrintError;
try
DocumentData :=#10+#10+#10+#10+' '+r_SysInfo.StationName;
DocumentData :=DocumentData + #10+' '+_getrmb(strtoint(vartostr(Carprice)))+' '+vartostr(Carprice)+'元';
DocumentData :=DocumentData + #10+#10+' '+inttostr(r_TradeInfo.WayNo) + ' ' + formatfloat('000000',r_Userinfo.No)+ ' '+formatfloat('00000000',r_UserInfo.CurrentBillNo-1);
DocumentData :=DocumentData + #10+#10+' '+datetimetostr(date)+ ' '+timetostr(time);
DocumentData :=DocumentData + #10+#10+#10+#10+#10+#10; //换行
if not WritePrinter(hPrinter, Pointer(DocumentData), Length(DocumentData), dwBytesWritten)
then PrintError;
if (LongInt(dwBytesWritten)<Length(DocumentData))
then PrintError;
finally
if not EndPagePrinter(hPrinter) then PrintError;
end;
finally
if not EndDocPrinter(hPrinter) then PrintError;
end;
finally
ClosePrinter(hPrinter);
end;
end;
uses printers Try //图形打印
with printer do begin
BeginDoc; //开始一个打印任务
Canvas.Font.Size :=12; //设置打印的字体
Canvas.TextOut (150,55,r_SysInfo.StationName); //在150,50位置打出收费站名称
Canvas.TextOut (170,70,_getrmb(strtoint(vartostr(CarPrice))));
Canvas.TextOut (330,70,vartostr(CarPrice)+'元');
Canvas.TextOut (120,85,inttostr(r_TradeInfo.WayNo));
Canvas.TextOut (190,85,formatfloat('000000',r_Userinfo.No));
Canvas.TextOut (300,85,copy(datetimetostr(now()),3,2)+formatfloat('00000000',r_UserInfo.CurrentBillNo-1));
Canvas.TextOut (120,100,datetimetostr(date()));
Canvas.TextOut (300,100,timetostr(time) );
end;
Finally
printer.EndDoc; //结束一个打印任务
end;