逐条记录打印(50分)

  • 主题发起人 主题发起人 施海鹏
  • 开始时间 开始时间

施海鹏

Unregistered / Unconfirmed
GUEST, unregistred user!
我要实现的功能是:
控制阵式打印机,不让打印机一页一页地出纸。就是说,不管打印几条记录,都停在原位不动。
就好像商场里的收款机那样,逐行出纸。
以下是我的实现方法,我试了好几台打印机,都不行啊,总是整页出纸
function InitPrint: Boolean;
var
ADevice, ADriver, APort : array[0..255] of Char;
DeviceHandle : THandle;
DevMode: PDeviceMode;
SysLength, SysWidth: Integer;
begin
Result := False;
Printer.GetPrinter(Adevice, ADriver, Aport, DeviceHandle);
if DeviceHandle = 0 then
Exit;
try
DevMode := GlobalLock(DeviceHandle);
Except
GlobalUnLock(DeviceHandle);
GlobalFree(DeviceHandle);
end;

if DevMode <> nil then
begin
with DevMode^do
begin
dmFields := dmFields or DM_PAPERLENGTH;
SysLength := dmPaperLength;
dmFields := dmFields or DM_PAPERWIDTH;
SysWidth := dmPaperWidth;
end;

with DevMode^do
begin
dmFields := dmFields or DM_PAPERSIZE;
dmPaperSIZE := DMPAPER_USER;
dmFields := dmFields or DM_PAPERLENGTH;
dmPaperLength := 100;
//这里设置了页的长度
dmFields := dmFields or DM_PAPERWIDTH;
dmPaperWidth := SysWidth;
end;

Printer.Orientation := poPortrait;
ResetDC(Printer.Handle, DevMode^);
end;

GlobalUnLock(DeviceHandle);

Result := True;
end;

procedure PrintAlarm;
var
FPrn: System.Text;
{ 打印输出文件 }
begin
if not InitPrint then
Exit;
try
Assignprn(FPrn);
Rewrite(Fprn);
Write(FPrn, '各位大虾帮忙啊');
except
end;
System.CloseFile(FPrn);
end;
 
var
F:TEXTFILE;
begin
ASSIGNFILE(F,'LPT1');
REWRITE(F);
WRITELN(F,chr(27) '@');
//initial the printer
WRITELN(F,'TEST1 FIRST LINE');你的内容
WRITELN(F,chr(12));
// move the paper to a new page
CLOSEFILE(F);
 
按wwwwb的方法可以,直接送打印口!
 
要求打印机有硬字库,针式打印机
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2297200
 
接受答案,谢谢各位
 

Similar threads

I
回复
0
查看
811
import
I
I
回复
0
查看
844
import
I
I
回复
0
查看
1K
import
I
后退
顶部