procedure Tfrm_tmprint.Button1Click(Sender: TObject);
var
 i,len:integer;
 barcode:String;
 x,x1,y,y1,l,h,flag:integer;  //x 列,y 行,l长度,h高度
 bit:Tbitmap;
begin flag:=1;
 len:=pas_gobal.mytm.Count;
 printer.Title:='条码打印';
 printer.BeginDoc;
 for i:=0 to len-1 do
  begin
    //ary_bmp[i]:=tbitmap.Create;
    //barcode:=pdw_makebarcode(pas_gobal.mytm.Strings[i]);
    //DrawBarCode(ary_bmp[i],barcode);
    //bit:=tbitmap.Create;
    {showmessage(pas_gobal.mytm.Strings[i]);
    barcode:=pdw_makebarcode(pas_gobal.mytm.Strings[i]);
    DrawBarCode(bit,barcode);  }
    if flag mod 2 =1 then
     begin
       BltTBitmapAsDib(Printer.Canvas.Handle,x*6,y*6,(x+l)*6,(y+h)*6,ary_bmp[i]);
       y:=y+80;
     end
    else
     begin
       BltTBitmapAsDib(Printer.Canvas.Handle,x1*6,y1*6,(x1+l)*6,(y1+h)*6,ary_bmp[i]);
       y1:=y1+80;
     end;
    flag:=flag+1;
  end;
printer.EndDoc;
end;
=====================================================================
执行该事件用于打印条码,但每次都是什么都没打印出来.
ary_bmp[i]  //是一个全局变量,该变量的长度在form的onshow事件中设定长度,并符值的..ary_bmp[] 类型是这样定义的
var
  frm_tmprint: Tfrm_tmprint;
  ary_bmp:array of Tbitmap;
请大家帮看看这是为什么,,,,

解决方案 »

  1.   

    procedure Tfrm_tmprint.Button1Click(Sender: TObject);
    var
     i,len:integer;
     barcode:String;
     x,x1,y,y1,l,h,flag:integer;  //x 列,y 行,l长度,h高度
     bit:Tbitmap;
    begin flag:=1;
     len:=pas_gobal.mytm.Count;
     printer.Title:='条码打印';
     Printer.BeginDoc;
     for i:=0 to len-1 do
      begin    if flag mod 2 =1 then
         begin
           BltTBitmapAsDib(Printer.Canvas.Handle,x*6,y*6,(x+l)*6,(y+h)*6,ary_bmp[i]);
           y:=y+80;
         end
        else
         begin
           BltTBitmapAsDib(Printer.Canvas.Handle,x1*6,y1*6,(x1+l)*6,(y1+h)*6,ary_bmp[i]);
           y1:=y1+80;
         end;
        flag:=flag+1;
      end;
    Printer.EndDoc;
    end;============================
    代码改成如上,还是不行....