现象:我做有一报表,每次打印完后,都自动走纸
目标:对打印机进行控制,每次打印后都停在打印后的位置上,不走纸求教如何实现,帮我实现此功能,贴源码者皆有分,不够再加!!!!

解决方案 »

  1.   

    procedure TForm1.Button6Click(Sender: TObject);
    var
      prn: TextFile;
      str: String;
    begin
      Assignfile(prn,'com1');  // or 'com1'
      Rewrite(prn);
      str := #27'a';
      Writeln(prn, str);   //控制码 如:chr(27)+'a'
      CloseFile(prn);
    end;
    STR也可为你要打印的内容
      

  2.   

    是用的QuickR吗?如果是升级到3.5.1
      

  3.   

    1、对打印机自动切纸进行设置
    2、针打的话procedure TUserDM.PrintInvoice(aDanJuID:string);
    var
      PDevice,PDriver,pPort:Array[0..255] of Char;
      hDMode:THandle;
      PDMode:PDeviceMode;
      X,Y,vX,vY:integer;
      i:integer;
    begin
        //获得打印机的DeviceMode结构句柄
        Printer.GetPrinter(pDevice,pDriver,pPort,hDMode);
        //如果句柄为0,表示打印机没有装载
        if hDMode=0 then
        begin
          Printer.PrinterIndex :=Printer.PrinterIndex ;
          Printer.GetPrinter(pDevice,pDriver,pPort,hDMode);
        end;
        if hDMode<>0 then
        begin
          //根据TDeviceMode的句柄获得指向该结构的指针变量
          PDMode:=GlobalLock(hDMode);
          if PDMode<>Nil then
          with PDMode^ do
          begin
               DMFields:=DMFields Or DM_PAPERLENGTH;
               dmPaperLength:=1270;//设置打印页长
               dmFields:=dmFields or DM_PAPERWIDTH;
               dmPaperWidth:=1920;//设置打印页宽
          end;
          GlobalUnLock(hDMode);//解锁,释放内存
          Printer.PrinterIndex :=Printer.PrinterIndex ;
        end;
        Printer.Canvas.font.name:='宋体';
        Printer.BeginDoc;//开始打印
        Printer.Canvas.font.size:=11;
        Printer.Canvas.TextOut(255,745,'No.100000000 ');
        ......
        Printer.EndDoc;
    end;