Pernah melihat hasil struk belanja di SUPERMARKET / MINIMAREKET. Panjang kertas yang di keluarkan selalu sesuai dengan jumlah item. Berikut adalah contoh script Delphi untuk membuat Print Struk seperti kaya di SUPERMARKET / MINIMARKET..
Program ini saya dapat setelah tanya sana – tanya sini dan akhirnya ……
—- AWAL PROGRAM —
unit Struk;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, RAWPrinter, Buttons, StrUtils;
type
TForm2 = class(TForm)
Button1: TButton;
BitBtn1: TBitBtn;
Button2: TButton;
procedure cetak(Const line: String);
function FormatString(Const VField, VItem : String; Const VLength : Integer; Const VSpace: Char): String;
procedure Button1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
function RataTengah(str: String; Lebar: Integer): String;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
Uses
Winspool, Printers;
{$R *.dfm}
{
posisi.Left := round( (Total_karakter_struk – pj_karakter) / 2);
itu posisi left supaya tetap di tengah
Semoga bermanfaat
}
function TForm2.RataTengah(str: String; Lebar: Integer): String;
var x, y : Integer;
begin
x := Length(str);
y := Lebar – x;
y := x div 2;
result := DupeString(‘ ‘, y) + str;
end;
{
function Rata Tengah(str: String; Lebar: Integer): String;
var x, y : Integer;
begin
x := Length(str);
y := Lebar – x;
y := x div 2;
result := DupeString(‘ ‘, y) + str;
end;
}
function TForm2.FormatString(Const VField, VItem : String; Const VLength : Integer; Const VSpace: Char): String;
var
_SStart : String;
_SStop : String;
_Length : LongInt;
Begin
_SStart := VField;
_SStop := VItem;
_Length := Length(_SStart)+Length(_SStop);
Result := ”;
While _Length + Length(Result) < VLength Do
Result := Result + VSpace;
Result := _SStart + Result + _SStop;
End;
Procedure TForm2.cetak(Const line: string);
Var
BytesWritten : DWORD;
hPrinter, DevMod : THandle;
DocInfo : TDocInfo1;
Device, Drv, Port : Array[0..255] of char;
begin
Printer.PrinterIndex := -1;
Printer.GetPrinter(Device, Drv, Port, DevMod);
If Not WinSpool.OpenPrinter(@Device, hPrinter, nil) Then
Raise Exception.Create(‘Printer tidak ada …’);
Try
DocInfo.pDocName := ‘Struk Penjualan’;
DocInfo.pOutputFile := Nil;
DocInfo.pDatatype := ‘RAW’;
If StartDocPrinter(hPrinter,1,@DocInfo) = 0 Then
Abort;
Try
If Not WritePrinter(hPrinter, @line[1], Length(line),BytesWritten) Then
Abort;
Finally
EndPagePrinter(hPrinter);
End;
Finally
Winspool.ClosePrinter(hPrinter);
End;
end;
procedure TForm2.Button1Click(Sender: TObject);
Const Enter = #13+#10;
begin
cetak(FormatString(‘——————–’,”, 40, ‘ ‘));
cetak(”+ENTER);
Cetak(FormatString(‘Jumlah’,’20′+Enter,40,’ ‘));
cetak(‘TEST CETAK LANGSUNG’+ENTER+ENTER+ENTER);
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
Const Enter = #13+#10;
var
f:textfile;
begin
Try
AssignFile(F,’LPT1′);
Rewrite(F);
Writeln(F,#27,#112,#0,#25,#250); // OpenCashdrawer
Write(F, RataTengah(‘NOTA PENJUALAN’+Enter,40));
Write(F, RataTengah(‘TLP : 022-300300′+Enter,40));
Write(F, ‘========================================’+Enter);
Write(F, ”+Enter+Enter);
Write(F, ‘========================================’+Enter);
Write(F, FormatString(‘Jumlah’,’20′+Enter,40,’ ‘));
Write(F, FormatString(‘Jumlah’,’30′+Enter,30,’ ‘));
Write(F, FormatString(‘Jumlah’,’20′+Enter,20,’ ‘));
Write(F, FormatString(‘Jumlah’,’10′+Enter,10,’ ‘));
Write(F, FormatString(”,’X 20′+Enter,40,’ ‘));
Write(F, ‘========================================’+Enter);
Write(F, FormatString(‘ Total : ‘,’200.000′+Enter,40,’ ‘));
Write(F, FormatString(‘ Bayar : ‘,’10.000′+Enter,40,’ ‘));
Write(F, FormatString(‘ Kembali : ‘,’50′+Enter+Enter+Enter,40,’ ‘));
Write(F, ‘Barang yang sudah di beli tidak dapat di’+Enter);
Write(F, ‘tukar / dikembaliakan.’+Enter);
Write(F, ‘========================================’+Enter+Enter+Enter+Enter+Enter);
Writeln(F,#27,#74,#10); // Linefeed
//Writeln(F,#29, #86, #66, #2); // untuk memotong kertas
Closefile(F);
Except on E:Exception Do
Begin
//fmessage.Label1.Caption:=’Cek Koneksi Printer Anda..’;
//fmessage.Show;
End;
End;
end;
procedure TForm2.Button2Click(Sender: TObject);
Const Enter = #13+#10;
var
f:textfile;
begin
Try
AssignFile(F,’LPT1′);
Rewrite(F);
// Writeln(F,#27,#112,#0,#25,#250); // OpenCashdrawer
Write(F, RataTengah(‘tukar / dikembaliakan.’,40));
Writeln(F,#27,#74,#10); // Linefeed
//Writeln(F,#29, #86, #66, #2); // untuk memotong kertas
Closefile(F);
Except on E:Exception Do
Begin
//fmessage.Label1.Caption:=’Cek Koneksi Printer Anda..’;
//fmessage.Show;
End;
End;
End;
end.
————- AKHIR PROGRAM —-
Showing posts with label Printer Delphi. Show all posts
Showing posts with label Printer Delphi. Show all posts
Thursday, March 22, 2018
Bermain dengan Printer Menggunakan Delphi
Pada postingan terakhir ini saya ingin mengajak sobat untuk bermain-main dengan printer menggunakan delphi. ada beberapa trik yang akan saya sharing terkait dengan printer diataranya bagaimana menampilkan printer default yang digunakan oleh komputer kita, bagaimana menampilkan list printer apa saja yang ada dikomputer kita, menampilkan job printer serta bagaimana print gambar.
Baik Langsung saja, seperti yang telah saya jelaskan bahwa ini adalah postingan terkhir (mungkin) karena itu jika ada salah-salah kata pada postingan saya atau komentar yang tidak sempat saya balas tolong dimaafkan dan dimaklumi. oke kita kembali ke topik. jadi hasil akhir yang akan kita peroleh nantinya seperti gambar berikut
Karena ada sesuatu dan lain hal jadi saya tidak akan membahas step-stepnya tapi akan langsung saya berikan source codenya. silahkan sobat download disini. selamat mencoba dan happy coding :)
Subscribe to:
Posts (Atom)
