发票套打问题(200分)

  • 主题发起人 主题发起人 197988
  • 开始时间 开始时间
1

197988

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,遇到一个问题,请解决:
一个票据打印机,打印纸width=8cm, height=7.5cm,我想直接操作lpt1,
代码如下:
var myfile :TextFile;
AssignPrn(myfile);
Rewrite(myfile);
Writeln(myfile,'test');
CloseFile(myfile);
发现如下问题:
1 打印机走纸长度过长,走了两页
2 如果此时打印机没有打开电源,或没有纸张,windows98会跳出来重试对话框,由于业务
原因不能让他出来,请问怎么屏蔽?
 
没有人回答?
 
用fastreport吧!
 
Windows列印時以頁為單位﹐就算印一個字也會走一頁紙﹐可以用報表工具﹐
或是繼承TPrinter自己另寫一個控件實現兩個步驟﹕印一行 ﹐換行回車
 
我现在用TPrinter类,请说出具体实现方法
另外,不能用报表工具!
还有请大家具体注意第2个问题
 
富翁们都被难住了???
 
有可能,你的纸张高度设大了点,弄小点试试
 
请大家注意第2个问题!!!
 
贴段代码,不过不是我写的! :)
unit PrinterStatus;
interface
uses
Windows, Messages, WinProcs, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs;
type
TPrinterStatus = class(TComponent)
private
fStatus : Byte;
fLPT : Integer;
Function GetTimeOut : Boolean;
Function GetIOError : Boolean;
Function GetPrinterSelected : Boolean;
Function GetOutOfPaper : Boolean;
Function GetAcknowledgement : Boolean;
Function GetPrinterBusy : Boolean;
public
Procedure CheckPrinterStatus;
Constructor Create(AOwner : TComponent);
Override;
Property TimeOut : Boolean Read GetTimeOut;
Property IOError : Boolean Read GetIOError;
Property PrinterSelected : Boolean Read GetPrinterSelected;
Property OutOfPaper : Boolean Read GetOutOfPaper;
Property Acknowledgement : Boolean Read GetAcknowledgement;
Property Busy : Boolean Read GetPrinterBusy;

end;

implementation
Function TPrinterStatus.GetTimeOut : Boolean;
begin

Result:=(fStatus and $01)=$01;
end;

Function TPrinterStatus.GetIOError : Boolean;
begin

Result:=(fStatus and $08)=$08;
end;

Function TPrinterStatus.GetPrinterSelected : Boolean;
begin

Result:=(fStatus and $10)=$10;
end;

Function TPrinterStatus.GetOutOfPaper : Boolean;
begin

Result:=(fStatus and $20)=$20;
end;

Function TPrinterStatus.GetAcknowledgement : Boolean;
begin

Result:=(fStatus and $40)=$40;
end;

Function TPrinterStatus.GetPrinterBusy : Boolean;
begin

Result:=not ((fStatus and $80)=$80);
end;

Procedure TPrinterStatus.CheckPrinterStatus;
Var
Status : Byte;
CheckLPT : Word;
begin
Status:=0;
If (fLPT>=1) and (fLPT<=3) then
begin
CheckLPT:=fLPT-1;
asm
mov dx,CheckLPT;
mov al,0;
mov ah,2;
int 17h;
mov &amp;Status, ah;
end;
end;
fStatus:=Status;
end;

Constructor TPrinterStatus.Create(AOwner : TComponent);
begin

Inherited Create(AOwner);
fLPT:=1;
fStatus:=0;
end;

end.
 
该用pDMode^.dmPaperSize,pDMode^.dmPaperLength,pDMode^.dmPaperWidth设置吧
 
没有想到现在这个问题才出来,第一个问题我自己解决了,把纸张设成自定义就行了,然后
用DEVMODE结构控制,第2个问题用了hnzgf的答案,也解决了!
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
977
import
I
后退
顶部