Impressao - usando o objeto TStream |
Top Previous Next |
|
{ Rotinas do objeto TDirectPrinterStream , para impressão diretamente na impressora, usando o Windows }
Constructor TDirectPrinterStream.Create(aPrinter: TPrinter; aTitle: String); Begin Inherited Create; fPrinter := aPrinter; fTitle := aTitle; CreateHandle; End;
Procedure TDirectPrinterStream.CreateHandle; Type DOC_INFO_1 = Packed Record pDocName: PChar; pOutputFile: PChar; pDataType: PChar; End; Const DocInfo: DOC_INFO_1 = ( pDocName: Nil; pOutputFile: Nil; pDataType: 'RAW'); Var aDevice, aDriver, aPort: Array[0..255] Of Char; aMode: Integer; Begin FreeHandle; If fHandle = 0 Then Begin fPrinter.GetPrinter(aDevice, aDriver, aPort, aMode); If OpenPrinter(aDevice, fHandle, Nil) Then Begin DocInfo.pDocName := PChar(fTitle); If StartDocPrinter(fHandle, 1, @DocInfo) = 0 Then Begin ClosePrinter(fHandle); fHandle := 0; End Else If Not StartPagePrinter(fHandle) Then Begin EndDocPrinter(fHandle); ClosePrinter(fHandle); fHandle := 0; End; End; End; End;
Destructor TDirectPrinterStream.Destroy; Begin FreeHandle; Inherited; End;
Procedure TDirectPrinterStream.FreeHandle; Begin If fHandle <> 0 Then Begin EndPagePrinter(fHandle); EndDocPrinter(fHandle); ClosePrinter(Handle); fHandle := 0; End; End;
Function TDirectPrinterStream.Write(Const Buffer; Count: LongInt): Longint; Var Bytes: LongInt; Begin WritePrinter(Handle, @Buffer, Count, Bytes); Result := Bytes; End; { Final das rotinas do objeto TDirectPrinterStream , para impressão diretamente na impressora, usando o Windows }
//exemplo
x : Array[0..255] of Char;
x := 'ABCD'; Impressora.Write(x,Length(x)); |