📄 打印完后如何使其"不"自动换页 (2000年12月15日).txt
字号:
打印完后如何使其"不"自动换页 (2000年12月15日)
本站更新 分类: 作者:大富翁论坛 推荐: 阅读次数:685
(http://www.codesky.net)
--------------------------------------------------------------------------------
打印完后如何使其"不"自动换页?(150分)
问题的分类是:打印 , 分坛主: houyg, 分坛主: cAkk
来自:liuaono1 时间:00-9-9 23:25:59 ID:331946
打印机为 LQ - 1600K , 页面设置为自定义,打印完后如何使其"不"自动换页?
(注:LQ - 1600KIII 打印机,连续纸模式下能做到"不"自动换页),字符串打印代码
如下,请您修改:
procedure Tkd1.PrintStrings(Strings1: TStrings);
var
MyFile: TextFile;
i: word;
begin
SetPaperSize(2230,30);
Printer.PrinterIndex := -1;
AssignPrn(MyFile);
try
Rewrite(MyFile);
printer.canvas.font.size:=14;
writeln(MyFile, ' 月未/已平衡出库单号码');
writeln(MyFile);
printer.canvas.font:=SrcList.font;
try
if Strings1.Count=0 then writeln(MyFile, ' 未: '+'无')
else for i := 0 to Strings1.Count-1 do
case (i mod 10) of
0 : if i=0 then write(MyFile, ' 未: '+Strings1.Strings[i])
else write(MyFile, ' '+Strings1.Strings[i]);
9 : writeln(MyFile, ' '+Strings1.Strings[i]);
else write(MyFile, ' '+Strings1.Strings[i]);
end;
finally
CloseFile(MyFile);
end;
except
on EInOutError do
MessageDlg('打印出错!', mtError, [mbOk], 0);
end;
end;
--------------------------------------------------------------------------------
来自:liuaono1 时间:00-9-13 7:43:05 ID:334701
补充一句:“不”自动换页即是想使它打印完后就停下来。
大虾、小虾们,帮帮忙吧!
--------------------------------------------------------------------------------
来自:only you 时间:00-9-13 7:47:48 ID:334704
这需要打印机的逐行支持,拒我所知针式打印机都可以,但喷墨和激光则可能不行!
--------------------------------------------------------------------------------
来自:R_Baggio 时间:00-9-13 8:55:29 ID:334783
也许不行
--------------------------------------------------------------------------------
来自:zhaoyipeng 时间:00-10-2 8:54:10 ID:354784
动态设置页长
--------------------------------------------------------------------------------
来自:only you 时间:00-10-3 23:01:42 ID:356118
采用逐行打印试试!代码如下:
var Myprinter : TRawPrinter;
oldprinter : TPrinter;
begin
MyPrinter:=TRawPrinter.Create;
oldprinter:=setprinter(MyPrinter);
try
if Printdialog1.execute then
begin
myprinter.startraw;
myprinter.write('khsdhskhkshdksd');
myprinter.writeln;
myprinter.endraw;
end
finally
setprinter(oldprinyter);
myprinter.free;
end
end;
Here is the code for the raw printer object.
unit Rawprinter;
interface
uses printers,windows;
type TRawprinter =class(TPrinter)
public
dc2 : HDC;
procedure startraw;
procedure endraw;
procedure write(const s : string);
procedure writeln;
end;
implementation
uses sysutils,forms;
function AbortProc(Prn: HDC; Error: Integer): Bool; stdcall;
begin
Application.ProcessMessages;
Result := not Printer.Aborted;
end;
type
TPrinterDevice = class
Driver, Device, Port: String;
constructor Create(ADriver, ADevice, APort: PChar);
function IsEqual(ADriver, ADevice, APort: PChar): Boolean;
end;
constructor TPrinterDevice.Create(ADriver, ADevice, APort: PChar);
begin
inherited Create;
Driver := ADriver;
Device := ADevice;
Port := APort;
end;
function TPrinterDevice.IsEqual(ADriver, ADevice, APort: PChar): Boolean;
begin
Result := (Device = ADevice) and (Port = APort);
end;
procedure TRawprinter.startraw;
var
CTitle: array[0..31] of Char;
CMode : Array[0..4] of char;
DocInfo: TDocInfo;
r : integer;
begin
StrPLCopy(CTitle, Title, SizeOf(CTitle) - 1);
StrPCopy(CMode, 'RAW');
FillChar(DocInfo, SizeOf(DocInfo), 0);
with DocInfo do
begin
cbSize := SizeOf(DocInfo);
lpszDocName := CTitle;
lpszOutput := nil;
lpszDatatype :=CMode;
end;
with TPrinterDevice(Printers.Objects[PrinterIndex]) do
begin
DC2 := CreateDC(PChar(Driver), PChar(Device), PChar(Port), nil);
end;
SetAbortProc(dc2, AbortProc);
r:=StartDoc(dc2, DocInfo);
end;
procedure TRawprinter.endraw;
var r : integer;
begin
r:=windows.enddoc(dc2);
end;
type passrec = packed record
l : word;
s : Array[0..255] of char;
end;
var pass : Passrec;
procedure TRawprinter.write(const s : string);
begin
pass.l:=length(s);
strpcopy(pass.s,s);
escape(dc2,PASSTHROUGH,0,@pass,nil);
end;
procedure TRawprinter.writeln;
begin
pass.l:=2;
strpcopy(pass.s,#13#10);
escape(dc2,PASSTHROUGH,0,@pass,nil);
end;
end.
--------------------------------------------------------------------------------
来自:悲酥清风 时间:00-10-4 17:46:43 ID:356669
驱动程序和打印机是同型号的吗?
--------------------------------------------------------------------------------
来自:liuaono1 时间:00-10-11 1:01:59 ID:362417
only you :
你的代码运行非常成功!在我给你加分之前,我想请你将
TRawprinter.writeln 过程改成可写一行字符串的形式,即
有 writeln; 和 writeln('字符串'); 两种书写形式.
成则再给你加 100 分!
拜托!谢谢!!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -