Impressao - usando comandos DOS de negrito, 10cpp em um objeto tprinter

Top  Previous  Next

  By using the Windows API Escape() function, 

  your application can pass data directly to the printer. 

  If the printer driver supports the PASSTHROUGH printer escape, 

  you can use the Escape() function and the PASSTHROUGH printer escape 

  to send native printer language codes to the printer driver. 

  If the printer driver does not support the PASSTHROUGH printer escape, 

  you must use the DeviceCapabilities() and ExtDevMode() functions instead. 

 

 

  Mit der Windows API Funktion Escape() kann man Daten direkt zum Drucker schicken. 

  Wenn der Drucker Treiber dies nicht unterstützt, müssen die DeviceCapabilities() 

  und ExtDevMode() Funktionen verwendet werden. 

} 

 

//  DOS like printing using Passthrough command 

// you should use "printer.begindoc" and "printer.enddoc" 

 

type 

  TPrnBuffRec = record 

  bufflength: Word; 

  Buff_1: array[0..255of Char; 

end

 

function DirectToPrinter(S: string; NextLine: Boolean): Boolean; 

var  

  Buff: TPrnBuffRec; 

  TestInt: Integer; 

begin 

  TestInt := PassThrough; 

  if Escape(Printer.Handle, QUERYESCSUPPORT, SizeOf(TESTINT), @testint, nil) > 0 then 

  begin 

    if NextLine then  S := S + #13 + #10

    StrPCopy(Buff.Buff_1, S); 

    Buff.bufflength := StrLen(Buff.Buff_1); 

    Escape(Printer.Canvas.Handle, Passthrough, 0, @buff, nil); 

    Result := True; 

  end 

  else 

    Result := False; 

end

 

// this code works if the printer supports escape commands 

// you can get special esc codes from printer's manual 

 

//  example: 

printer.BeginDoc; 

try 

  DirectToPrinter('This text '); 

finally 

  printer.EndDoc; 

end