Minggu yang sangat cerah kawan.... bingung masu ngasih judul apa ni buat postingan yang ini. ke inget ketika sering aktif di forum - forum delphi, banyak yan gmenanyakan, " bagaimana sih membuat form transaksi penjualan ?", " contoh aplikasi minimarket , dan cara penyimpanan transaksi detail penjualan. Mungkin bagi yang sudah mas master dalam delphi artikel ini tidak berguna sama sekali, tapu artike ini saya tujukan bagi para pemula yang sedang kebingunan bagaimana membuat form transaksi yang sudah suport dengan barcode scaner.
Barcode Scaner berfungsi untuk membaca nilai barcode yang tertera pada suatu produk kemudian mengirimkan pesan pada program POS untuk diteruskan pencarian barang yang sesuai dengan nilai barcode tersebut. Biasanya barcode scaner mengirimkan pesan menekan tombol enter secara otomatis selesai membaca nilai barcode.
Nah munpung lagi fresh ni otak.. saya kasih contoh form transaksi penjualan dengan delphi yang sudah suport dengan barcode scaner . Langsung saja simak project dibawah ini ..
Pertama buat form seperti dibahawah ini ....
procedure TFpenjualan.FormCreate(Sender: TObject);
begin
sg.ColCount:=7;
sg.RowCount:=2;
sg.ColWidths[0]:=200;
sg.ColWidths[1]:=300;
sg.ColWidths[2]:=150;
sg.ColWidths[3]:=100;
sg.ColWidths[4]:=80;
sg.ColWidths[5]:=80;
sg.ColWidths[6]:=100;
sg.Cells[0,0]:='Kode Barcode';
sg.Cells[1,0]:='Nama Barang';
sg.Cells[2,0]:='Kategori';
sg.Cells[3,0]:='Satuan';
sg.Cells[4,0]:='Harga';
sg.Cells[5,0]:='Jumlah';
sg.Cells[6,0]:='Subtotal';
sg.Col:=0;
sg.Row:=sg.RowCount -1;
sg.SetFocus; end;
Kemudian pada komponen string grid yang digunakan untk menampung item yang dibeli oleh konsumen ..
Pada event onKeydown ketikan kode dibawah ini ..
procedure TFpenjualan.sgKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
c,r,i:integer;
begin
if (sg.Col = 0) and (sg.Cells[0,sg.Row]<>'') then
begin
if key = 13 then
begin
ExecSQL(dm.Q1,'select * from tb_barang where kodebarcode="'+Sg.Cells[0,sg.Row]+'"',True);
if dm.Q1.IsEmpty then
MessageBox(handle,'Data Barang tidak ditemukan','Error',MB_ICONERROR)
else
begin
Kodebarcode:=sg.Cells[0,sg.Row-1];
if (sg.Cells[0,sg.Row ] =Kodebarcode)then
begin
sg.Cells[5,sg.Row-1]:=inttostr(strtoint(sg.cells[5,sg.row-1])+1);
sg.Cells[6,sg.Row-1]:=GetRupiah(Floattostr(strtoFloat(sg.Cells[5,sg.row-1])* strtoFloat(getNilai(sg.Cells[4,sg.row-1]))));
if (sg.Cells[0,sg.Row+1]<>'') then
begin
for c:=0 to sg.ColCount -1 do
for r:=sg.Row to sg.row do
sg.Cells[c,r]:='';
for i := sg.Row to sg.RowCount -1 do
begin
sg.Cells[0,i]:=sg.Cells[0,i+1];
sg.Cells[1,i]:=sg.Cells[1,i+1];
sg.Cells[2,i]:=sg.Cells[2,i+1];
sg.Cells[3,i]:=sg.Cells[3,i+1];
sg.Cells[4,i]:=sg.Cells[4,i+1];
sg.Cells[5,i]:=sg.Cells[5,i+1];
sg.Cells[6,i]:=sg.Cells[6,i+1];
end;
sg.RowCount :=sg.RowCount -1;
end else
if sg.Cells[0,sg.RowCount -1]='' then
begin
for c:=0 to sg.ColCount -1 do
for r:=sg.Row to sg.row do
sg.Cells[c,r]:='';
sg.RowCount :=sg.RowCount -1;
end else
if sg.Cells[0,sg.Row] = sg.Cells[0,sg.RowCount -1 ] then
begin
for c:=0 to sg.ColCount -1 do
for r:=sg.Row to sg.row do
sg.Cells[c,r]:='';
end;
sg.Row:=sg.RowCount -1;
sg.Col:=0;
sg.SetFocus;
Lbayar.Caption:=GetRupiah(SumGrid(sg));
end else
begin
kodebarcode:=dm.Q1.FIeldByName('kodebarcode').AsString;
sg.Cells[1,sg.Row]:=dm.Q1.FieldByName('namabarang').AsString;
sg.Cells[2,sg.Row]:=dm.Q1.FieldByName('kategori').AsString;
sg.Cells[3,sg.Row]:=dm.Q1.FieldbyName('satuan').AsString;
sg.Cells[4,sg.Row]:=GetRupiah(dm.Q1.FieldByName('hargajual').AsString);
sg.Cells[5,sg.Row]:='1';
sg.Cells[6,sg.Row]:=GetRupiah(dm.Q1.FieldByName('hargajual').AsString);
if (sg.Cells[0,sg.RowCount -1]<>'') and (sg.Cells[1,sg.RowCount -1]<>'') and (sg.Cells[2,sg.RowCount -1]<>'')
and (sg.Cells[3,sg.RowCount -1]<>'') and (sg.Cells[4,sg.RowCount -1]<>'') and (sg.Cells[5,sg.RowCount -1]<>'')
and (sg.Cells[6,sg.RowCount -1]<>'') then
begin
sg.RowCount:=sg.RowCount+1;
end;
sg.Row:=sg.RowCount -1;
sg.Col:=0;
sg.SetFocus;
Lbayar.Caption:=GetRupiah(SumGrid(sg));
end;
end;
etotalbayar.Text:=Lbayar.Caption;
Etotal.Text:=etotalbayar.Text;
end;
end else
if (sg.Col =5) or (sg.Col =4) then
begin
if key = 13 then
begin
sg.Col:=0;
sg.Row:=sg.RowCount -1;
sg.SetFocus;
end;
end;
end;
Dan hasilnya ketika pada Sting grid pada kolom kodebarcode ketika ditekan enter atau langsung pake barcode scanner.
Yang ingin Sedot source code silahkan disini
Update Contact :
No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email : Fajarudinsidik@gmail.com
No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email: Fajarudinsidik@gmail.com
atau Kirimkan Private messanger melalui email dengan klik tombol order dibawah ini :