由于字段太长,假如内容在一行以内,可以只打印一行,否则第2行或第3行自动打印。

解决方案 »

  1.   

    autosize=false;
    autostretch=true;
    wordwrap=true;
    即可,不过对中文的支持好像不好
      

  2.   

    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为打印的行宽,一个汉字算两个。别的你应该懂了吧?
      

  3.   

    autosize=false;
    autostretch=true;
    wordwrap=true;在需要换行的地方加一空格即可!
    在beforeprint事件中写代码即可
      

  4.   

    再加一条,xsx,xsy为我求的打印机位置的千分比,用来对打印宽度进行控制的,你不必用。。