Procedure Print_f(var y:integer; x,z:integer; Str_c:string); var Strk,Strf:string; k:integer; begin Strf:=Str_c; if length(Strf)>z then begin Strk:=copy(strf,0,z); Printer.Canvas.TextOut(trunc(x*xsx),trunc(y*xsx),strk); k:=Length(strf); Strf:=copy(strf,z,k); y:=y+20; Print_f(y,x,z,strf); end else Printer.Canvas.TextOut(trunc(x*xsx),trunc(y*xsx),Strf); end; x,y为打印位置的横纵坐标。z为打印的行宽,一个汉字算两个。别的你应该懂了吧?
autostretch=true;
wordwrap=true;
即可,不过对中文的支持好像不好
var
Strk,Strf:string;
k:integer;
begin
Strf:=Str_c;
if length(Strf)>z then
begin
Strk:=copy(strf,0,z);
Printer.Canvas.TextOut(trunc(x*xsx),trunc(y*xsx),strk);
k:=Length(strf);
Strf:=copy(strf,z,k);
y:=y+20;
Print_f(y,x,z,strf);
end else
Printer.Canvas.TextOut(trunc(x*xsx),trunc(y*xsx),Strf);
end;
x,y为打印位置的横纵坐标。z为打印的行宽,一个汉字算两个。别的你应该懂了吧?
autostretch=true;
wordwrap=true;在需要换行的地方加一空格即可!
在beforeprint事件中写代码即可