150高分帮忙解决一打印问题? 可以向打印机的供应商索取打印机的资料~~可以得到一个Dll文件~~里面有直接向端口写打印机命令的函数~~你直接调用就可以了~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最好是通过打印机厂商提供的Dll~~那里面有足够的函数进行打印~~ 厂商只提供的打印机的驱动程序,没有提供函数。 我打印机已装好了。在word里, 写字板都可以打印的,在程序里头具体怎样实现 你去索要阿~~唉~~下星期我就要写那个POS58和TM201的打印函数~~我在等他们给我dll呢~~上星期我写完了TM88的~~呵呵~~ 哪里有呀! 厂商卖打印机没有提供。 我用的打印机就是TP POS58 直接用 Tprinter可以实现吗? tikkypeng(一两狂死郎之天衣有缝) 我用了这种笨方法 PosHeight:=0;//变量需要声明PosHeight,PosWidth,LineNum,LineWidth,LineHeight PosWidth0; LineNum:=0; Printer.BeginDoc; Height:=Printer.PageHeight; Width:=Printer.PageWidth; LineHeight:=Height Div 30; LineWidth:=Width Div 5; Printer.Canvas.Font.Size:=14; Printer.Canvas.TextOut(PosWidth,PosHeight,'Emp_Id'); Printer.Canvas.TextOut(PosWidth+LineWidth,PosHeight,'Emp_Name'); LineNum:=1; PosHeight:=(PosHeight+LineHeight); While Not PrtRs.EOF Do//[red]PrtRs是我自己定义的一个RecordSet变量,用于返回数据集[/red] Begin Printer.Canvas.Font.Size:=12; Printer.Canvas.TextOut(PosWidth,PosHeight,PrtRs.Fields['Emp_Id'].Value); Printer.Canvas.TextOut(PosWidth+LineWidth,PosHeight,PrtRs.Fields['Emp_Name'].Value); PosHeight:=PosHeight+LineHeight; LineNum:=LineNum+1; If LineNum>30 Then//[blue]你在这里就可以控制分页了[/blue] Begin Printer.NewPage;//这是分页的语法 PosHeight:=0; PosWidth:=0; LineNum:=0; End; PrtRs.MoveNext; End; Printer.EndDoc; // chs0=$1C,$26,$1C,$57,0;//中文(普通)// chs1=$1C,$26,$1C,$57,1;//中文(四倍)// eng=$1C,$2E,$1C,$57,0;//英文(普通)// eng=$1C,$2E,$1C,$57,1;//英文(四倍)// cut=$1B,$69;//切纸// hl=$0A;//换行// cr=$0D];//回车// sp=$1B,$20,2;//字间间隔// lsp=$1B,$32;//行间间隔// hom=$1B,$3C;//行首这里有直接驱动打印机的命令阿~~为什么还要借助别的东西呢??直接向端口发送这些命令就可以了~~ 但是还有一个问题,就是像素的问题(一个汉字是24*24个点) 3.00(宽)*3.00(高)毫米我用的纸是58毫米, 8点/mm, 384点/行 如果我字段用Printer.Canvas.Font.Size:=12; 用12像素 我该怎样确定我一行打多少个字 用printer对象的话,不用换行。只需要计算Canvas上输入文字的位置即可。换行的话用 NewPage 。若是用AssignPrn() 写打印端口的话,你Writeln 一个空行即可。直接发打印控制命令,我没试过。另外动态设置纸张大小,好象没办法实现(很多书上都有介绍,不过好象都不行)。 日期结算问题 如何调用Word模板生成Word文档 终于劝说女朋友也不用日货了~ 我要在拷贝文件时用进度条控件显示拷贝进度该怎么做? 一个看似简单的问题:浮点数和字符串之间的转换? 请会XML的进来看看 "模态"窗体的全屏与非全屏切换 ※※☆★★★★★★欢迎大家参与程序调试,附源代码。★★★★★★☆※※ delphi+asp如何实现网络认证 如何读取二进制文件,并把它写入一个文本文件 故地重游,别有感触 有哪位老兄做过超市POS系统,顾客显示器是如何驱动的,请告知,在下先多谢了!!!
下星期我就要写那个POS58和TM201的打印函数~~我在等他们给我dll呢~~
上星期我写完了TM88的~~
呵呵~~
我用了这种笨方法
PosHeight:=0;//变量需要声明PosHeight,PosWidth,LineNum,LineWidth,LineHeight
PosWidth0;
LineNum:=0; Printer.BeginDoc;
Height:=Printer.PageHeight;
Width:=Printer.PageWidth;
LineHeight:=Height Div 30;
LineWidth:=Width Div 5; Printer.Canvas.Font.Size:=14;
Printer.Canvas.TextOut(PosWidth,PosHeight,'Emp_Id');
Printer.Canvas.TextOut(PosWidth+LineWidth,PosHeight,'Emp_Name'); LineNum:=1;
PosHeight:=(PosHeight+LineHeight); While Not PrtRs.EOF Do//[red]PrtRs是我自己定义的一个RecordSet变量,用于返回数据集[/red]
Begin
Printer.Canvas.Font.Size:=12;
Printer.Canvas.TextOut(PosWidth,PosHeight,PrtRs.Fields['Emp_Id'].Value);
Printer.Canvas.TextOut(PosWidth+LineWidth,PosHeight,PrtRs.Fields['Emp_Name'].Value);
PosHeight:=PosHeight+LineHeight;
LineNum:=LineNum+1;
If LineNum>30 Then//[blue]你在这里就可以控制分页了[/blue]
Begin
Printer.NewPage;//这是分页的语法
PosHeight:=0;
PosWidth:=0;
LineNum:=0;
End; PrtRs.MoveNext;
End;
Printer.EndDoc;
// chs1=$1C,$26,$1C,$57,1;//中文(四倍)
// eng=$1C,$2E,$1C,$57,0;//英文(普通)
// eng=$1C,$2E,$1C,$57,1;//英文(四倍)
// cut=$1B,$69;//切纸
// hl=$0A;//换行
// cr=$0D];//回车
// sp=$1B,$20,2;//字间间隔
// lsp=$1B,$32;//行间间隔
// hom=$1B,$3C;//行首这里有直接驱动打印机的命令阿~~为什么还要借助别的东西呢??直接向端口发送这些命令就可以了~~
换行的话用 NewPage 。若是用AssignPrn() 写打印端口的话,你Writeln 一个空行即可。直接发打印控制命令,我没试过。
另外动态设置纸张大小,好象没办法实现(很多书上都有介绍,不过好象都不行)。