Modul 8. Membuat Form Transaksi Peminjaman Buku pada Delphi 7.0

Program Aplikasi Perpustakaan dengan Delphi + Ms. Access 2007
Ahmad Rizal Abidin, M.Kom
4checks.com-Free Shipping and Handling on All Personal Checks with code DWF008
Karena project Prjpustaka sebelumnya sudah dibuat, pada modul 4. Membuat menu, maka pada kesempatan ini adalah melengkapi frmpinjam yaitu dengan cara:
1. Mengaktifkan Delphi 7.0 dengan cara, klik Start, Klik All Program, Klik Borland Delphi 7, Klik Delphi 7.
2. Klik menu File, klik Open Project, tentukan folder tempat anda menyimpan project PRjpustaka, lalu klik prjpustaka dan klik open
3. Klik Menu file, Klik New, klik form, ganti caption pada properties dengan Input Data Transaksi Peminjaman, dan pada name ketikkan frmpinjam.
4. Klik menu View, lalu klik forms dan double klik frmenu, klik Transaksi pada frmmenu, klik peminjaman dan ketikkan :
frmpinjam.show;

5. Klik menu View, lalu klik forms dan double klik frmpeminjam, lengkapi form tersebut seperti gambar berikut :
Gambar 1. Membuat form Transaksi Peminjaman Buku

Catatan :
Form diatas terdiri dari :
Palette DataControl : bblookupcombobox, DBedit
Palette standard : panel, Label, Edit, Button
Palette Additional : StringGrid
Palette ADO : Ado Connection dan ADOquery
Palette DataAcces : DataSource
Palette Win32 : DatetimePicker

6. Mengkoneksikan database dengan menggunakan Adoconnection
Klik ADOconnection pada Form, klik ConnectionString (…), klik Build, Klik Microsoft Office 12.0 Acces Database Engine OLEDB Provider (untuk office 2007) tetapi kalau menggunakan office XP dapat dipilih Microsoft jet OLEDB 4.0, test connection
Dan klik next, pada data source ketikkan : D:\perpustakaan\perpustakaan.accdb, dan yang terakhir klik test connection.
Gambar 2. mengkoneksikan Database M. Access

7. apabila test connection tampil keterangan tes connection succeeded, maka koneksinya sudah benar, tutup semua windows koneksi dengan cara klik OK. kembali ke frmpinjam.
8. Klik Adoquery1, klik Adoconnection pada proterties: lalu pilih ADOConnection1, dan klik SQL pada properties, lalu ketikkan :
select * From anggota
Dan Klik Active pada properties ganti false menjadi true.
9. Klik Adoquery2, klik Adoconnection pada proterties: lalu pilih ADOConnection1, dan klik SQL pada properties, lalu ketikkan :
select * From Buku
Dan Klik Active pada properties ganti false menjadi true.

Untuk Adoquery3 dan ADOquery4 hanya properties untuk Adoconnection : ADOConnection1.

10. Mengaktifkan DataSource1, yaitu dengan cara klik Datasource1 pada form pinjam, lalu klik Dataset pilih Adoquery1
11. Mengaktifkan DataSource2, yaitu dengan cara klik Datasource2 pada form pinjam, lalu klik Dataset pilih Adoquery2
12. Mengaktifkan DBLookupComboBox1, dengan cara klik DBLookupcombobox1, dan klik listssource : pilih DataSource1, ListField isi dengan IDAnggota, dan untuk keyfield isi dengan IDAnggota.
13. Mengaktifkan DBEdit1, dengan cara klik DBEdit1, lalu klik Datasource pada properties, lalu pilih datasource1 dan datafilednya nama
14. Mengaktifkan DBLookupComboBox2, dengan cara klik DBLookupcombobox2, dan klik listssource : pilih DataSource2, ListField isi dengan IDBuku, dan untuk keyfield isi dengan IDBuku
15. Mengaktifkan DBEdit2, dengan cara klik DBEdit2, lalu klik Datasource pada properties, pilih datasource2 dan datafilednya JudulBuku
16. Mengaktifkan DBEdit3, dengan cara klik DBEdit3, lalu klik Datasource pada properties, pilih datasource2 dan datafilednya Pengarang
17. Mengisi Edit2, dengan cara double klik Edit2 pada form pinjam, ganti events dengan OnKeypress, lalu ketik listing berikut :

procedure TFrmPinjam.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not ((key >= '0') and (key <= '9') or (key=#8)) then
begin
key:=#0;
Application.Messagebox('maaf hanya angka','Cek Input',mb_iconstop);
end;
end;

18. Mengisi Tombol Proses, dengan cara double klik tombol proses lalu ketik listing berikut :

procedure TFrmPinjam.Button1Click(Sender: TObject);
var
i,qty,tot:integer;

begin
sg.RowCount := sg.rowcount+1;
sg.cells[1,sg.RowCount-1]:=dblookupcombobox2.text;
sg.Cells[2,sg.RowCount-1]:=dbedit2.Text ;
sg.Cells[3,sg.rowcount-1]:=dbedit3.Text ;
qty:=strtoint(edit3.Text);
sg.cells[4,sg.rowcount-1]:=edit3.text;
tot:=0;
for i:=1 to sg.RowCount-1 do
begin
tot := tot + strtoint(sg.Cells[4,i]);
sg.Cells[0,i]:=inttostr(i);
end;
edit4.text := inttostr(tot);
end;

19. Mengisi tombol Hapus, dengan cara double klik tombol hapus lalu ketik listing berikut :

procedure TFrmPinjam.Button5Click(Sender: TObject);
begin
sg.RowCount := sg.rowcount-1;
end;

20. Mengisi tombol Save, dengan cara double klik tombol save lalu ketik listing berikut :

procedure TFrmPinjam.Button2Click(Sender: TObject);
var i :integer;
begin
if messagedlg('Yakin akan disimpan',mtinformation,[mbyes,mbno],0)=mryes then
begin
adoquery4.sql.Clear;
adoquery4.sql.add ('insert into pinjam(id_pinjam,id_anggota,tgl_pinjam)values ("'+ edit1.Text +'","'+ dblookupcombobox1.Text +'","'+ datetostr(dt.date) +'")');
adoquery4.execsql;

for i :=1 to sg.RowCount-1 do
begin
adoquery3.SQL.Clear;
adoquery3.sql.add('insert into dpinjam(id_pinjam,id_buku,jumlah) values ("'+ edit1.Text +'","'+ sg.Cells[1,i] +'","'+ sg.cells[4,i] +'")');
adoquery3.ExecSQL ;
end;
end;
end;

21. Membuat Koding program pada tombol close, double klik tombol close ketikkan listing berikut :
procedure TFrmpinjam.Button4Click(Sender: TObject);
begin
frmpinjam.Close;
end;

22. Pada form Create (OnCreate) ketik listing berikut :

procedure TFrmPinjam.FormCreate(Sender: TObject);
begin
edit2.text:=datetostr(dt.Date);
edit6.Text:=datetostr(dt2.Date);
sg.RowCount :=1;
sg.ColCount:=5;
sg.Cells[0,0]:='No';
sg.Cells[1,0]:='Kode Buku';
sg.Cells[2,0]:='Judul buku';
sg.Cells[3,0]:='Pengarang';
sg.Cells[4,0]:='Qty';

sg.ColWidths [0]:=40;
sg.ColWidths [1]:=60;
sg.ColWidths [2]:=80;
sg.Colwidths[3]:=80;
sg.colwidths[4]:=60;

end;

@Ahmad
Selamat MEncOba…

Materi yang berhubungan :
Modul 1. Dasar Pemograman Delphi 7
Modul 2. Alur Program Delphi 7.0
Modul 3. Membuat Database dengan Menggunakan Microsoft Acces 2007
Modul 4. Membuat Menu Pada Delphi 7.0
Modul 5. Membuat Form Penerbit pada Delphi 7.0
Modul 6. Membuat Form Anggota pada Delphi 7.0
Modul 7. Membuat Form Buku pada Delphi 7.0
Modul 8. Membuat Form Transaksi Peminjaman Buku pada Delphi 7.0
Modul 9. Membuat Form Transaksi Pengembalian Buku pada Delphi 7.0 + MS. Access 2007
Modul 10. Membuat Nomor peminjaman secara otomatis pada Form Transaksi Peminjaman Buku pada Delphi 7.0 + MS. Access 2007
Modul 11. Membuat Report dengan Rave
Modul 12. Membuat Report dengan Rave + Delphi 7

1. Delphi Programming 1. Transaction Processing Application Programs Sales of Goods
2. Delphi Programming 2. Product Sales Transaction Processing Application (Form Product)
3. Delphi Programming 3. Product Sales Transaction Processing Application (Form Costumer)
4. Delphi Programming 4.Aplikasi Pengolahan Transaksi Penjualan Barang (Form Transaksi)
5. Delphi Programming 5. Aplikasi Pengolahan Transaksi Penjualan Barang (Form Distributor)
6. Delphi Programming 6. Aplikasi Pengolahan Transaksi Penjualan Barang (Form Transaksi Pembelian Barang)
7. Delphi Programming 7. Pembuatan Laporan Daftar Barang dengan menggunakan Rave
8. Delphi Programming 8. Pembuatan Laporan Daftar Pelanggan dengan menggunakan Rave
9. Delphi Programming 9. Pembuatan Laporan Transaksi Pembelian Barang dengan menggunakan Rave (Master/Detail)
10. Delphi Programming 10. Pembuatan Laporan Transaksi PerTanggal dan PerPeriode dengan Menggunakan Rave (Tanggal + datetimePicker)

42 Responses

  1. mo nanya pak, beda fungsi pemakaian antara DBGrid sama StringGrid dimana pak? kemudian, pemakaian bbrp buah adoquery di dlm satu form apa disesuaikan dg jlh tabel yg berhubungan atau seperti apa ya pak?

    triims b4

  2. Kalau DBGrid menampilkan data dari Database, jadi data yang ditampilkan pada DBGrid adalah data yang sudah tersimpan di dalam Database.

    sedangkan StringGrid untuk menampung data dari input kedalam bentuk tabel… jika data sudah benar baru kita simpan ke dalam Database.

    Di dalam satu form bisa menggunakan beberapa adoquery. dan begitupula dalam satu adoquery bisa menselect lebih dari satu tabel…

    moga membantu

  3. Malam Pak, coding delphi untuk lama inap otomatis caranya gimana ya pak…misalkan tanggal datang kita inputkan, tanggal kembali juga diinputkan, jadi lama inap nya berdasarkan tanggal tersebut.

  4. modul yg ok nih pak,

    bisa dijelaskan listing berikut pak?

    sg.RowCount := sg.rowcount+1;
    sg.cells[1,sg.RowCount-1]:=dblookupcombobox2.text;
    sg.Cells[2,sg.RowCount-1]:=dbedit2.Text ;
    sg.Cells[3,sg.rowcount-1]:=dbedit3.Text ;
    qty:=strtoint(edit3.Text);
    sg.cells[4,sg.rowcount-1]:=edit3.text;
    tot:=0;
    for i:=1 to sg.RowCount-1 do
    begin
    tot := tot + strtoint(sg.Cells[4,i]);
    sg.Cells[0,i]:=inttostr(i);

    cara membaca program diatas bgmn ya pak?

    sg.rowcount + 1 ==> maksudnya?

    sg.cells[1,sg.RowCount-1]:=dblookupcombobox2.text; ==> ?

    dan berikutnya?

    harap maklum ya pak, katrok sih.. 😀

    • perintah ini digunakan untuk menampilkan data pada sg(String Grid) setiap kali menekan tombol proses. pada saat id buku diisi dan strsnya… terus tekan tombol proses maka data akan diletakkan pd brs berikutnya, jika data sudah benar baru tekan tombol save.
      kira-kira seperti itu….
      makasih…
      nilai default sg.rowcount =0;
      sg.rowcount + 1 ==> maksudnya sg.rowcount bernilai 1 (baris ke satu)
      sg.cells[1,sg.RowCount-1]:=dblookupcombobox2.text, maksudnya meletakkan data id buku pada kolom 1, baris ke 0 (1-1)…
      sg.cells[2,sg.RowCount-1] berarti kolom 2 baris 0…
      dst…

  5. maaf pak,..mo nanya,…klo menghapus record yg ad pd StringGrid ,..gmn???
    trm’s sblmnya,..

  6. slam kenal pak,,,,
    mau tanya nihh,,, itu kan artikl dngan databasenya ACCES kalu menggunakan padarox gmna…
    saya mau minta bantuannya,,, gmna listing untuk pencarian (pakai “%”) yang menggunakan QUERy bukan ADOQUERY… soalnya saya lagi baut aplilkasi pakai PARADOX…

  7. slam knal pak,,,
    klo buate pake delphi sama mysql kodingnya gimana yha pak?????
    trima kacih

    • koding di delhpinya sama aja, tetapi yang akan membedakan pada saat koneksi ke database di langkah ke 6. kalau dengan Mysql harus dibuatkan DSN di ODBC

  8. Salam Pak,
    Jika data pada primary key sudah ada dalam database lalu mw menampilkan pesan pada user [Msgdialog]
    bagaimana listing programnya pak?, masih dengan Delphi + Ms. Access.

  9. salam pak,
    cara memberi jumlah maksimal pinjam buku, bagaimana pak? misal, ada anggota akan pinjam 3 buku, tapi jmlah maksimal pinjam hanya 2 buku/ eksemplar….
    masih dengan delphi + Ms.Access?

  10. pak bagaimana menghapus data pada baris tertentu di stringgrid? sesuai dengan posisi kursor yang kita tentukan.

    • Mungkin ini kali ya….
      procedure TFrmPinjam.Button5Click(Sender: TObject);
      begin
      sg.RowCount := sg.rowcount-1;
      end;

  11. pak, pertanyaan q koq ndak dijawab tow…
    mohon jawabannya….
    terima kasih.

    • Oh.. ya…
      tambahkan aja di Tombol Proses, logika di dalam perulangan For i….
      if i > 2 then
      begin
      msgdilog(….)
      exit
      end;

  12. Maaf nih pak, mw tanya, listing di atas kan utk kasus peminjaman buku, jadi untuk input detail buku yg dipinjamnya di input satu per satu berdasarkan kode buku, nah saya lg bikin sistem informasi nilai bwt sekolah, untuk input nilainya gmn ya pak biar di string grid nya itu otomatis menampilkan semua mata pelajaran yg akan diinput nilainya tanpa hrs menginput kode pelajaran satu per satu, jd nantinya tinggal input kolom nilainya aja.
    ditunggu jawabannya pak
    Terima kasih…

    • Untuk Nilai pertama anda harus membuat databasenya dengan benar, terus gunakan DBGrid bukan string grid, karena data diload dari database, konsepnya tetap memasukkan kode pelajaran beserta semesternya tetapi dengan secara otomatis tampil siswa yang mengambil matapelajarannya dan tersedia kolom nilai, tentunya ada proses siswa yang mengambil mata pelajaran tertentu terlebih dahulu…
      moga membantu…

  13. Assalamu’alaikum
    Salam kenal Pak. Berapa judul buku yang bisa disimpan dalam database MS Access?
    Gimana cara menghitungnya?
    Terima kasih…

    • Jumlahnya gak tau pasti ya… tapi lebih dari 150000 record
      cobaaja dengan koding dibawah ini :
      buat project dan form baru dgn delphi, lalu tambahkan adoconnection dan adoquery, trs 2 buah button dan satu edit, jangan lupa koneksikan ke database dengan fieldnya (id autonumber, dan nama text) lalu ketik listing berikut :

      procedure TForm1.Button1Click(Sender: TObject);
      var
      tes:string;
      i : integer;
      begin
      tes:='Ahmad';
      for i := 1 to 50000 do
      begin
      adoquery1.sql.clear;
      adoquery1.sql.Add('insert into table1(nama) values ("'+tes+'")');
      adoquery1.ExecSQL;
      end;
      end;
      

      untuk melihat jumlah total record :

      procedure TForm1.Button2Click(Sender: TObject);
      begin
      adoquery1.Close;
      adoquery1.sql.Add('select count (*) from table1');
      adoquery1.open;
      edit1.Text := adoquery1.Fields[0].AsString;
      end;
      end.
      
  14. malam pak,mw nanya dan minta bantuannya
    tolong bantuin ya pak
    saya punya matriks dalam stringGread
    0 40 0 60
    0 10 40 20
    50 0 10 0
    10 20 70 0
    saya mw mnandai 0 dalam matriks (4*4) tersebut,yang paling banyak ditandai lebih dahulu.
    ilusinya :
    yang ditandai pertama, kolom 1. yang ke 2 boleh baris 3 dan 4
    satu nilai 0 tidak boleh ditantai 2 kali
    jumlah tanda harus sama dengan ordo matriks (4)
    diatas kita cuma punya 3 tanda (kolom1,baris3,baris4)
    di cell 31 dan 41 berarti dilewati 2 kali tanda. untuk mendeteksi itu gimana?? tolong…pakkkkkk
    kolom yang dilewati 2 kali tanda nanti mw di pakai valeuny

    gimana ya pak caranya..

  15. aduh… rumit juga yach… logikanya tapi saran saya coba uji dulu dengan pascal….
    terus hitung aja dulu jumlah nol yang ada di setiap kolomnya, terus baru hitung jumlah nol yang ada di setiap baris, pada saat menghitung jumlah nol pada baris, berikan aja logika jika pada kolom 1 tidak sama dengan nol, maka hitung jumlah nol… mungkin ini sedikit koding untuk uji coba dengan pascal …

    program ahmd;
    uses crt;
    const
        matrik:array[1..4,1..4] of integer=((0,40,0,60),(60,0,40,20),(0,0,10,0),(10,20,70,0));
    var
    i,j,k,r,bi,ji:integer;
    hit : string;
    begin
    clrscr;
    k:=0;
    r:=0;
     for i := 1 to 4 do
     begin
     for j := 1 to 4 do
     begin
    
      write('  ',matrik[i,j]);
      if matrik[j,i]=0 then
       k:=k+1;
       end;
     writeln('kolom',i, '= ', k);
     k:=0;
     end;
     for bi:= 1 to 4 do
     begin
     for ji:= 1 to 4 do
     begin
     write(' ',matrik[bi,ji]);
     if matrik[bi,1] <> 0 then
     if matrik[bi,ji]=0 then
     k:= k + 1;
     end;
     writeln('baris',bi,'= ', k);
     k:=0;
     end;
    readln;
    end.
    
    
    • makasih ya pak..
      kalo mw ngecek nilai terbesar tiap cellnya gimana pak??
      perintah untuk mengecek nilai minimum tiap baris kecuali NOL…gimana pak ya..
      yang di cek duluan baris yang mempunyai nilai not terbanyak
      mohon bantuannya pak..

    • maksudnya NOL terbanyak..yang cell-nya dicek duluan

      • kalau cari max or min jadikan aja kodingnya seperti dibawah ini ….

        program ahmd;
        uses crt;
        const
            matrik:array[1..4,1..4] of integer=((0,40,0,60),(60,0,40,20),(0,0,10,0),(10,20,70,0));
        var
        min,max,i,j,k,r,bi,ji:integer;
        hit : string;
        tampung1 : array[1..4] of integer;
        tampung2 : array[1..4] of integer;
        temp1:integer;
        begin
        clrscr;
        k:=0;
        r:=0;
         for i := 1 to 4 do
         begin
         for j := 1 to 4 do
         begin
        
          write('  ',matrik[i,j]);
        {  if i=1 then
          begin}
          if matrik[j,i]=0 then
           k:=k+1;
           end;
         writeln('kolom',i, '= ', k);
         k:=0;
         min:=1000;
         max:=0;
         end;
         for bi:= 1 to 4 do
         begin
         for ji:= 1 to 4 do
         begin
         write(' ',matrik[bi,ji]);
         if matrik[bi,1] <> 0 then
         if matrik[bi,ji]=0 then
         k:= k + 1;
         end;
         tampung1[bi] := bi;
         tampung2[bi] := k;
         writeln('baris',bi,'= ', k);
         writeln('cara nampung data....:',tampung1[bi],'  ',tampung2[bi]);
         k:=0;
        end;
        for i := 1 to 4 do
        begin
        for j := 1 to 4 do
        begin
        
        if matrik[i,j] > max then
           max := matrik[i,j];
        if matrik[i,j] < min then
        begin
        if matrik[i,j] <> 0 then
             min := matrik[i,j];
        end;
        end;
        writeln('Nilai Max baris ',i, ' ',max);
        writeln('Nilai Min baris ',i, ' ',min);
        end;
        readln;
        end.
        

        kalau…. yang dicek duluan baris yang mempunyai nol terbanyak….
        kayaknya gak ada pengaruhnya kan udah ketahuan tu baris mana yang nol nya banyak dan min maxnya….
        good luck

    • program ahmd;
      uses crt;
      const
      matrik:array[1..4,1..4] of integer=((0,40,0,60),(60,0,40,20),(0,0,10,0),(10,20,70,0));
      var
      min,max,i,j,k,r,bi,ji,x,y,dumm:integer;
      dummy: array[1..2] of integer;
      dummy2: array[1..4,1..4] of integer;
      hit : string;
      //tampung1 : array[1..4] of integer;
      //tampung2 : array[1..4] of integer;
      temp1:integer;
      begin
      clrscr;
      dumm:= 0;
      dummy[1]:=0;
      dummy[2]:=0;
      k:=0;
      r:=0;
      for i := 1 to 4 do
      begin
      for j := 1 to 4 do
      begin
      write(‘ ‘,matrik[i,j]);
      if matrik[j,i]=0 then
      k:=k+1;
      end;
      if dumm < K then
      begin
      dumm:= K;
      dummy[1]:= i;
      end;
      writeln('kolom',i, '= ', k);
      writeln(‘jumlah:’ ,dumm);
      writeln(‘x:’ ,dumm[1]);
      writeln(‘y:’ ,dumm[2]);
      k:=0;
      min:=1000;
      max:=0;
      end;
      for bi:= 1 to 4 do
      begin
      for ji:= 1 to 4 do
      begin
      write(' ',matrik[bi,ji]);
      if matrik[bi,1] 0 then
      if matrik[ji,bi]=0 then
      k:= k + 1;
      end;
      //tampung1[bi] := bi;
      //tampung2[bi] := k;
      writeln(‘baris’,bi,’= ‘, k);
      //writeln(‘cara nampung data….:’,tampung1[bi],’ ‘,tampung2[bi]);
      k:=0;
      end;
      i:= dummy[1];
      begin
      for j := 1 to 4 do
      begin

      if matrik[i,j] > max then
      max := matrik[i,j];
      if (min = 0) and (matrik[i,j] 0> then
      min:= matrik [i,j];
      if matrik[i,j] 0 then
      min := matrik [i,j];
      dummy[2] := j;
      end;
      end;
      //writeln(‘Nilai Max baris ‘,i, ‘ ‘,max);
      writeln(‘Nilai Min baris ‘,i, ‘ ‘,min);
      min:= 0;
      end;
      x := 1;
      y := 1;
      for i:= 1 to 4 do
      begin
      if i dummy[1] then
      begin
      for j := 1 to 4 do
      begin

      if j dummy[2] then
      begin
      dummy2[x,y] := matrik[i,j];
      inc(y);
      end;
      end;
      inc(x);
      end;
      end;
      readln;
      end.

  16. Koding diatas niatnya mw mencari nilai terkecil (yang bukan NOL) dari baris yang memiliki NOL terbanyak terlebih dahulu.
    Misalnya
    0 40 0 60 jumlah NOL= 2
    60 0 40 20 jumlah NOL= 1
    0 0 10 0 jumlah NOL= 3
    10 20 70 0 jumlah NOL= 1

    Yang terpilih 10 pada (3,3) maka matriknya menjadi:

    0 40 60
    60 0 20

    10 20 0

    Selanjutnya 40 pada (1,2) maka matriknya menjadi

    60 20

    10 0
    Selanjutnya 10 pada(2,1) maka metriksnya menjadi
    20

    Tolong bantuannya lagi pak..koding diatas kok nggak ada outputnya juga nggak ada errornya

  17. pak….
    help me..

    • program ahmd;
      uses crt;
      const
          matrik:array[1..4,1..4] of integer=((0,40,0,60),(60,0,40,20),(0,0,10,0),(10,20,70,0));
      var
      r,min,max,i,j,k,tes1,n,bi,ji,a,c,d:integer;
      hit : string;
      tampung1 : array[1..4] of integer;
      tampung2,nil1,nil2 : array[1..4] of integer;
      t2 : array[1..4] of integer;
      tampung3 : array[1..4,1..4] of integer;
      temp1,temp2:integer;
      begin
      clrscr;
      k:=0;
      n:=0;
      r:=0;
      
      for a:= 1 to 4 do
      begin
       for i := 1 to 4 do
       begin
       if i = nil1[i] then
       writeln('baris ilang')
       ELSE
       begin
            for j := 1 to 4 do
            begin
            i
            write(matrik[i,j],'  ');
                 if matrik[i,j]=0 then
                 k:=k+1;
            end;
            t2[i]:=k;
            k:=0;
            writeln;
       END;
       end;
       for i := 1 to 4 do
       if t2[i]>max then
       begin
       max:=t2[i];
       r:=i;
       end;
      
       nil1[r]:=r;
       for i:=1 to 4 do
       begin
       t2[i]:=0;
       end;
      
       max:=0;
       min:=10000;
       writeln('Batas',a);
       readln;
      
      for i := 1 to 4 do
      begin
      for j := 1 to 4 do
      begin
      if matrik[i,j] < min then
         begin
         if matrik[i,j] <> 0 then
            begin
                 min := matrik[i,j];
                 temp1:=j;
            end;
         end;
      end;
      nil2[temp1]:=temp1;
      min:=1000;
      end;
      
      end;
      readln;
      end.
      
      
  18. Mantap gand…

  19. minta syntax permainan jumanji dong….bntuin,,,,,pusing

  20. Mas untuk mengetahui posisi kursor pada baris ke sekian d stringgrid caranya gmn ya ?

  21. untuk mengetahui baris yang aktif oleh kursor gmn caranya

  22. source code menggunakan date time picker peminjaman dengan pengembalian bagai mana omm???

  23. siang pak,
    mau tanya….

    gimana cara menyimpan data pada tabel yang mempunyai tipe data double dengan ADOQUERY,
    saya menggunakan DBEDIT yg mana datasource dan data fieldnya sudah diarahkan,
    saya udah coba konversi ke floatto str tpi tetep hasilnya nol semua,
    mohon pencerahannya yaa paa…??
    salam… 🙂

  24. Pak, saya mau tanya.gimana sih cara menghitung hari keterlambatan pengembalian buku. bgmn listingnya?

    • pada modul 9 ada….
      logikanya
      jika tanggal kembali melebihi tanggal tempo maka
      denda = tanggal kembali – tanggal tempo

  25. pak mo nanya ne klo penjadwalan lapangan futsal menggunakan algo semut gmn ya?
    soalnya saya ga ngerti nerapin ke delphi nya
    keep posting ya pak

  26. pak mau nanya ne klo mau buat report tapi hasil dari stringgrid gmn caranya ya ?

  27. pak mau tanya neh dt2.datenya kok undeclared identifier pak?

  28. masih belum ada tanggapan

Leave a reply to ahmadrizal Cancel reply