高精度走紙問題,本人第一次在大富翁問問題,請高手支持!謝謝! ( 积分: 100 )

F

finer

Unregistered / Unconfirmed
GUEST, unregistred user!
[?]
請問各位高手,關於走紙的問題。
我的連續紙寬是230mm,刀縫與刀縫之間的距離是8mm,也就是每個標簽的高度是8mm,因為很難調到8mm的中間,所以打幾條記錄後,就會打印到刀縫裡去。
請問我怎樣才能走得准確?
謝謝大家!
請參考圖片 http://www.goan.com.cn/study/paper.gif
 
[?]
請問各位高手,關於走紙的問題。
我的連續紙寬是230mm,刀縫與刀縫之間的距離是8mm,也就是每個標簽的高度是8mm,因為很難調到8mm的中間,所以打幾條記錄後,就會打印到刀縫裡去。
請問我怎樣才能走得准確?
謝謝大家!
請參考圖片 http://www.goan.com.cn/study/paper.gif
 
你怎么控制打印的
 
在QuickRep裡,設置如下:
//自定義紙張
procedure TMForm.SetPrinterPaperSize(const PaperName:string;PaperWidth,PaperLength:integer);
var
PrintDevice, PrintDriver, PrintPort : array[0..255] of Char;
hDMode:THandle;
hPrinter:THandle;
FormInfo:TFormInfo1;
begin
Printer.GetPrinter(PrintDevice,PrintDriver,PrintPort,hDMode);
OpenPrinter(PrintDevice, hPrinter, nil);
if hPrinter = 0 then
raise Exception.Create('連接打印機失敗!');
with FormInfodo
begin
Flags := FORM_USER;
pName := PChar(PaperName);
//Size.cx := PaperWidth*100;
//Size.cy := PaperLength*100;
Size.cx := PaperWidth;
Size.cy := PaperLength;
ImageableArea.Left := 0;
ImageableArea.Top := 0;
//ImageableArea.Right := PaperWidth*100;
//ImageableArea.Bottom := PaperLength*100;
ImageableArea.Right := PaperWidth;
ImageableArea.Bottom := PaperLength;
end;

if not SetForm(hPrinter, PChar(PaperName), 1, @FormInfo) then

AddForm(hPrinter, 1, @FormInfo);
ClosePrinter(hPrinter);
end;

//打印按鈕
procedure TMForm.Button1Click(Sender: TObject);
var
i:Integer;
begin
i:=StrToInt(Edit4.Text);
with ADOStoredProc1do
begin
Close;
Parameters.ParamByName('@PName').Value:=Edit1.Text;
Parameters.ParamByName('@PBat').Value:=Edit2.Text;
Parameters.ParamByName('@UserID').Value:=Edit3.Text;
Parameters.ParamByName('@rowi').Value:=Edit4.Text;
Open;
ExecProc;
end;
QRDBText1.DataSet:=ADOStoredProc1;
QRDBText2.DataSet:=ADOStoredProc1;
QRDB3.DataSet:=ADOStoredProc1;
QRDBText4.DataSet:=ADOStoredProc1;
QRDBText5.DataSet:=ADOStoredProc1;
QRDBText6.DataSet:=ADOStoredProc1;
QRDBText1.DataField:='PName1';
QRDBText2.DataField:='PBat1';
QRDB3.DataField:='UserID1';
QRDBText4.DataField:='PName2';
QRDBText5.DataField:='PBat2';
QRDBText6.DataField:='UserID2';
if i<=4 then
begin
QuickRep1.Page.Length:=32;
SetPrinterPaperSize('xiao',2300,320);
end
else
begin
QuickRep1.Page.Length:=i*8;
SetPrinterPaperSize('xiao',2300,i*8);
end;

QuickRep1.Preview;
DeleteCustomPaper('xiao');
end;
 
BottomMargin:0.0mm
TopMargin:0.0mm
Length:32mm
PageSize:Custom
Width:230mm
 
你这样在win2000以上的版本不能定义纸张哦。其实最好发送打印机走纸命令。以前碰到过都是这样解决的。
 
to llhguxing:
你好。
请问你是怎样发送打印机走纸命令的!
我的是LQ 300K+
命令是:
EPSON ESC/PK控制码
在软件中选择一台EPSON ESC/PK打印机使您可以使用高级字体和图形。

操作:

CR

格式控制:

ESC 0,ESC 2,ESC 3,ESC A,ESC+,LF,ESC J,ESC C,ESC C0,FF,
ESC N,ESC O,ESC B,VT,ESC Q,ESC 1,ESC D,HT,ESC SP,ESC $,
ESC (C,ESC (c,ESC (U,ESC (V,ESC (v

打印变化控制:

SO,DC4,ESC W,SI,DC2,ESC E,ESC F,ESC G,ESC H,ESC w,ESC P,
ESC M,ESC g,ESC p,ESC S,ESC T,ESC 4,ESC 5,ESC t,ESC 6,
ESC 7,ESC !,ESC -,ESC (-,ESC R,ESC x,ESC q,ESC k,
ESC %,ESC :,ESC &amp;,ESC (X,ESC X,ESC c,ESC (^,ESC (t,ESC r

图像:

ESC K,ESC L,ESC Y,ESC Z,ESC *,ESC ?

光栅图形模式控制:

ESC (G (*1), ESC. (*1)
 
我是用自定义纸张的,是我自己写的,还是不错的,你可以在这里查查,有很多得益
 
我的代碼也是自定義紙張的,現在的問題是走約10個記錄後,就會打到刀縫裡去!
 
我也遇到这样问题,不过我是自己打印的用
Printer.begin
Doc;
//以下是打印内容
Printer.Canvas.TextOut(CmToPixelX(20), CmToPixelY(5), '这是输出的动态和静态内容);
........................
Printer.EndDoc;
在WIN2000下没有自定义纸张大小,只能定义固定长度大小的纸,而我要打印的页长是根据要打印的内容的多少是不一定的。
请各位帮助??
 
不妨在高度上加多0.3厘米,试试.
 
能否知道打印机的状态:开关、缺纸等(win2000)?
 
这个难题不难,是你的纸张定义不够精确。
 
是牵引送纸吗?如果不是,就不要看下面的了。
牵引的那个齿轮,每两个之间是0.5英寸。看看你纸上的孔,是多少个孔对应齿轮上的两个孔,然后算一下长度。用尺子量不准的。
我以前碰到过一种打印纸,两孔之间的距离比正常的大一点点,结果老是打不准,后来就硬是把两孔之间的距离当作是0.5英寸,通过数孔数来算长度,才解决的。
技术之外的解决方法。不知道能不能解决你的问题。
另外,我以前看过的一个贴子:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2315332
 
我這樣解決了:
因為打印時,通常都是10行記錄後就會打到“刀縫”裡去,所以我當超過10行記錄時,就讓它的TopMargin:=2(小於時是為0的)
誠如大家所說,這本來就不是高精度的機器,所以差不多就行。
不過如有高手告訴我怎樣操控那些個EPSON ESC/PK控制码,那我真是太謝謝了!
謝謝大家!
 
多人接受答案了。
 
顶部