Home » , , , , » Penggunaan Barcode Scaner dengan Delphi

Penggunaan Barcode Scaner dengan Delphi

Unknown | 7:44 PM | 0 comments
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 ....



Pada form penjualan event oneCreate ditulisakan kode dibawah ini untuk membat header kolom string grid

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

Share this article :

0 comments:

 
Copyright © 2011. TUTORIAL DELPHI DAN DATABASE - All Rights Reserved