Fast POS Print
ardahan29.03.2004 - 13:37:11
procedure TFrmPrint.BtnPrintClick(Sender: TObject);
function GetCurrentPrinterHandle: THandle;
var
Device, Driver, Port : array[0..255] of char;
hDeviceMode: THandle;
begin
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
if not OpenPrinter(@Device, Result, nil) then
RaiseLastWin32Error;
end;

Procedure PrintFileToGeneric(Const sFileName: string; ejectPage: boolean );
Const
BufSize = 16384;
Var
Count : Integer;
BytesWritten: DWORD;
hPrinter: THandle;
DocInfo: TDocInfo1;
f: file;
Buffer: array [1..Bufsize] of char;
ch: Char;
Begin
// If not WinSpool.OpenPrinter(GenericPrinter, hPrinter, nil) Then raise exception.create('Printer not found');
hPrinter:=GetCurrentPrinterHandle;
Try
DocInfo.pDocName := 'MyDocument';
DocInfo.pOutputFile := Nil;
DocInfo.pDatatype := 'RAW';
If StartDocPrinter(hPrinter, 1, @DocInfo) = 0 Then
Abort;

Try
If not StartPagePrinter(hPrinter) Then
Abort;

System.Assign(f, sFileName);
Try
Reset(f, 1);
Try
While not eof(f) Do Begin
Blockread(f, Buffer, BufSize, Count);
If Count > 0 Then Begin
If not WritePrinter(hPrinter, @Buffer, Count, BytesWritten) Then
Abort;
End;
End;
Finally
If ejectPage Then Begin
ch:= #12;
WritePrinter( hPrinter, @ch, 1, BytesWritten );
End;
End;
Finally
EndPagePrinter(hPrinter);
System.Closefile( f );
End;
Finally
EndDocPrinter(hPrinter);
End;
Finally
WinSpool.ClosePrinter(hPrinter);
End;
End;
begin
printfiletogeneric( 'C:\test.txt', True );
end;


Mehmet Avşar - Analist
 
ardahan29.03.2004 - 15:22:51
uses WinSpool,Printers;

.....

type
TPassThroughData = record
nLen: Word;
Data: array[0..255] of Byte;
end;
....


procedure TFrmPrint.BtnTablePrintClick(Sender: TObject);
procedure PrintText(s: string);
var
PTBlock: TPassThroughData;
begin
PTBlock.nLen := Length(s);
StrPCopy(@PTBlock.Data, s);
Escape(Printer.Handle, PASSTHROUGH, 0, @PTBlock, nil);
end;
begin
Printer.BeginDoc;
PrintText('CustNo : '+FloatToStr(Table1CustNo.AsFloat)+#10#13);
PrintText('Company : '+Table1Company.AsString+#10#13);
PrintText('City : '+Table1City.AsString+#10#13);
Printer.EndDoc;
end;


Açıklama :

#10#13 : Bir sonraki satıra geçilmesini sağlar.
PrintText(string) : Yazdırmak istediğiniz ifadeyi yollayacağınız fonksiyon
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com