Melengkapi Form dengan Kode Program (Source Code)

Agar form yang telah dibuat dapat berjalan dengan optimal, haruslah kita lengkapi dengan source code programnya.

Penambahan kode program harus disesuaikan dengan logika jalannya program dan logika perhitungan yang ada sesuai dengan aturan yang berlaku seperti aturan dalam matematika atau aturan dalam akuntansi.

Langkah-langkah untuk menambahkan source code pada sebuah form dapat dilakukan seperti contoh berikut ini :

  1. Buka project yang telah dibuat sebelumnya.
  2. Pada jendela Project Manager, click tab Documents
  3. Dalam tab Documents tersebut click-lah nama form yang akan diberi source code
  4. Click tombol Modify sehingga form yang dimaksud ditampilkan
  5. Double click pada form yang ada sehingga ditampilkan jendela penulisan source code seperti gambar berikut :

    Dalam jendela source code tersebut, perlu diperhatikan bahwa :

    • Bagian Object menunjukan bahwa objek yang terpilih adalah yang akan diberi kode program (dalam gambar adalah objek Form1).
    • Bagian Procedure menunjukan pada prosedur atau event yang akan diberi kode program (dalam gambar adalah prosedur Load).
    • Satu Objek dapat memiliki lebih dari satu prosedur atau event.
    • Jika diperlukan maka prosedur dapat dibuat sendiri (Cara Membuat Prosedur Sendiri ada dalam tulisan sebelumnya pada blog ini)
  1. Tuliskan source code program sesuai dengan logika jalannya program.
  2. Sebagai contoh untuk latihan tambahkanlah source code untuk form Master Data Barang yang telah dibuat sebelumnya, kemudian tambahkanlah source code seperti berikut :

Object : Form1                                                                       Procedure : Load

SELECT 1 &&Membuka/berpindah pada ruang kerja 1 untuk tabel yang diperlukan

USE MsBarang &&Mengaktifkan/membuka tabel MsBarang

 SET ORDER TO KdBrgMsBrg &&Mengaktifkan file index bernama KdBrgMsBrg

 SET FILTER TO .Not. DELETED() &&Menyaring data hanya yang tidak terhapus saja

 

Object : Form1                                                                       Procedure : Init

*Perintah-perintah berikut akan dijalankan hanya sekali yaitu pada saat pertama kali form dipanggil

 ThisForm.Kosong &&Memanggil prosedur yang dibuat sendiri, dengan nama prosedur Kosong

 ThisForm.Gakaktif &&Memanggil Prosedur bernama GakAktif

 ThisForm.Tombolawal &&Memanggil Prosedur bernama TombolAwal

Object : Form1                                                                       Procedure : Unload

 *Perintah-perintah berikut akan dijalankan saat form ditutup

 SELECT 1

 USE &&Menutup/menonaktifkan tabel yang ada pada ruang kerja 1

 

Object : Form1                                                                       Procedure : Aktif

*Perintah-perintah berikut akan membuat semua objek textbox menjadi bisa diubah isinya

 ThisForm.txtKdbrgmsbrg.enabled = .T.

 ThisForm.txtNmbrgmsbrg.enabled = .T.

 ThisForm.txtJenismsbrg.enabled = .T.

 ThisForm.txtJlbrgmsbrg.enabled = .T.

 ThisForm.txtHargamsbrg.enabled = .T.

Object : Form1                                                                       Procedure : GakAktif

 *Perintah-perintah berikut akan membuat semua objek textbox menjadi tidak bisa diubah isinya

 ThisForm.txtKdbrgmsbrg.enabled = .F.

 ThisForm.txtNmbrgmsbrg.enabled = .F.

 ThisForm.txtJenismsbrg.enabled = .F.

 ThisForm.txtJlbrgmsbrg.enabled = .F.

 ThisForm.txtHargamsbrg.enabled = .F.

Object : Form1                                                                       Procedure : Kosong

 *Perintah-perintah berikut akan mengosongkan semua objek textbox

 ThisForm.txtKdbrgmsbrg.Value = “”

 ThisForm.txtNmbrgmsbrg.Value = “”

 ThisForm.txtJenismsbrg.Value = “”

 ThisForm.txtJlbrgmsbrg.Value = “”

 ThisForm.txtHargamsbrg.Value = “”

Object : Form1                                                                       Procedure : TombolAwal

 *Perintah-perintah berikut akan mengatur semua command button menjadi bisa diclick (.T.) atau tidak (.F.)

 ThisForm.cmdTambah.Enabled = .T.

 ThisForm.cmdSimpan.Enabled = .F.

 ThisForm.cmdHapus.Enabled = .F.

 ThisForm.cmdPerbaiki.Enabled = .F.

 Thisform.cmdBatal.Enabled = .F.

 ThisForm.cmdKeluar.Enabled = .T.

 *Perintah-perintah berikut akan mengatur semua command button menjadi tidak bisa langsung focus (TabStop)

 ThisForm.cmdTambah.TabStop = .F.

 ThisForm.cmdSimpan.TabStop = .F.

 ThisForm.cmdHapus.TabStop = .F.

 ThisForm.cmdPerbaiki.TabStop = .F.

 Thisform.cmdBatal.TabStop = .F.

 ThisForm.cmdKeluar.TabStop = .F.

ThisForm.cmdSimpan.Caption = “\<SIMPAN” &&Mengubah caption command simpan menjadi SIMPAN

Object : txtKdBrgMsBrg                                                        Procedure : KeyPress

 LPARAMETERS nKeyCode, nShiftAltCtrl

 IF nKeyCode = 13 THEN &&Jika Tombol yang ditekan adalah tombol Enter (ASCII 13)

    SELECT 1

    SEEK RTRIM(ThisForm.txtKdbrgmsbrg.Value) &&Mencari data Kode Barang yang sesuai dengan data dalam txtKdBrgMsBrg

    IF FOUND() THEN &&Jika Pencarian tsb ditemukan

          ThisForm.txtNmbrgmsbrg.Value = NmBrgMsBrg &&Menampilkan data NmBrgMsBrg ke textboxnya

          ThisForm.txtJenismsbrg.Value = JenisMsBrg &&Menampilkan data JenisMsBrg ke textboxnya

          ThisForm.txtJlbrgmsbrg.Value = STR(JlBrgMsBrg,3,0) &&Menampilkan data JlBrgMsBrg ke textboxnya sekaligus dikonversi menjadi type character atau string

          ThisForm.txtHargamsbrg.Value = STR(HargaMsBrg,9,0) &&Menampilkan data HargaMsBrg ke textboxnya sekaligus dikonversi menjadi type character atau string

          ThisForm.Gakaktif &&Memanggil prosedur GakAktif

          Thisform.cmdSimpan.Enabled = .F.

          ThisForm.cmdPerbaiki.Enabled = .T.

          ThisForm.cmdHapus.Enabled = .T.

          ThisForm.GrdMsBarang.Refresh &&Memperbaharui isi/tampilan dalam grid

          ThisForm.GrdMsBarang.Enabled = .F. &&Membuat Grid tidak bisa di click

    ELSE

          ThisForm.txtNmbrgmsbrg.SetFocus &&Meletakan kursor pada textbox NmBrgMsBrg

    ENDIF

 ENDIF

Object : txtNmBrgMsBrg                                                      Procedure : KeyPress

 LPARAMETERS nKeyCode, nShiftAltCtrl

 IF nKeyCode = 13 Then

    ThisForm.txtJenismsbrg.SetFocus

 ENDIF

Object : txtJenisMsBrg                                                          Procedure : KeyPress

 LPARAMETERS nKeyCode, nShiftAltCtrl

 IF nKeycode = 13 Then

    ThisForm.txtJlbrgmsbrg.SetFocus

 ENDIF

Object : txtJlBrgMsBrg                                                          Procedure : KeyPress

 LPARAMETERS nKeyCode, nShiftAltCtrl

 IF nKeycode = 13 Then

    ThisForm.txtHargamsbrg.SetFocus

 ENDIF

Object : txtHargaMsBrg                                                       Procedure : KeyPress

 LPARAMETERS nKeyCode, nShiftAltCtrl

 IF nKeycode = 13 Then

    ThisForm.cmdsimpan.TabStop = .T. &&Menjadikan command simpan bisa menerima focus

 ENDIF

Object : cmdTambah                                                          Procedure : Click

 ThisForm.cmdTambah.Enabled = .F.

 ThisForm.cmdKeluar.Enabled = .F.

 ThisForm.cmdBatal.Enabled = .T.

 ThisForm.cmdSimpan.Enabled = .T.

 ThisForm.Kosong

 ThisForm.aktif

ThisForm.txtKdbrgmsbrg.SetFocus &&Memfocuskan kursor pada textbox txtkdBrgMsBrg

Object : cmdSimpan                                                           Procedure : Click

 IF EMPTY(ThisForm.txtKdbrgmsbrg.Value) .or. EMPTY(ThisForm.TxtNmbrgmsbrg.Value) .Or. EMPTY(ThisForm.TxtJenismsbrg.Value) .or. EMPTY(ThisForm.TxtJlbrgmsbrg.Value) .or. EMPTY(ThisForm.TxtHargamsbrg.Value) THEN &&Memeriksa apakah textbox yang ada masih kosong (EMPTY)

    MESSAGEBOX(“Upss…, Data Belum Diisi Semua”+CHR(13)+”Lengkapi Dulu Pengisian Datanya”,64,”Validasi”) &&Menampilkan kotak dialog jika ada textbox yang masih kosong

 ELSE

    SELECT 1

    IF ThisForm.cmdSimpan.Caption = “\<SIMPAN” THEN &&Memeriksa apakah command simpan captionnya adalah SIMPAN

          APPEND BLANK &&Menambah satu record kosong ke dalam tabel

          REPLACE KdBrgMsBrg WITH ThisForm.txtKdbrgmsbrg.Value &&Menyimpan data Kode Barang dari textbox txtKdBrgMsBrg kedalam field KdBrgMsBrg

    ENDIF

    REPLACE NmBrgMsBrg WITH ThisForm.txtNmbrgmsbrg.Value, JenisMsBrg WITH ThisForm.txtJenismsbrg.Value, JlBrgMsBrg WITH VAL(ThisForm.txtJlbrgmsbrg.Value), HargaMsBrg WITH VAL(ThisForm.txtHargamsbrg.Value) &&Menyimpan semua data dari textbox ke dalam masing-masing fieldnya

    ThisForm.Kosong

    ThisForm.GrdMsBarang.Refresh

    ThisForm.cmdSimpan.Caption = “\<SIMPAN”

    ThisForm.txtKdbrgmsbrg.Enabled = .T.

    ThisForm.txtKdbrgmsbrg.SetFocus

 ENDIF

 ThisForm.GrdMsBarang.Enabled = .T.

 ThisForm.cmdSimpan.TabStop = .F. &&Membuat command simpan tidak bisa langsung menerima focus

Object : cmdHapus                                                              Procedure : Click

 cJawab = MESSAGEBOX(“Upss…, Data Tersebut Akan Dihapus…!”+CHR(13)+”Apakah Anda Yakin…?”,36,”Konfirmasi”) &&Menampung pilihan user dari dialog konfirmasi kedalam variabel memory bernama cJawab

 IF cJawab = 6 THEN &&Memeriksa isi nilai variabel cJawab

    DELETE &&Menghapus record yang terpilih/yang aktif

 ENDIF

 ThisForm.GrdMsBarang.Refresh

 ThisForm.Kosong

 ThisForm.aktif

 ThisForm.cmdPerbaiki.Enabled = .F.

 Thisform.cmdHapus.Enabled = .F.

 Thisform.cmdSimpan.Enabled = .T.

 ThisForm.GrdMsBarang.Enabled = .T.

 ThisForm.txtKdbrgmsbrg.SetFocus

Object : cmdPerbaiki                                                           Procedure : Click

 ThisForm.cmdPerbaiki.Enabled = .F.

 Thisform.cmdHapus.Enabled = .F.

 ThisForm.cmdSimpan.Caption = “\<UPDATE”

 ThisForm.cmdSimpan.Enabled = .T.

 Thisform.Aktif

 ThisForm.txtKdbrgmsbrg.Enabled = .F.

 ThisForm.GrdMsBarang.Enabled = .F.

 ThisForm.txtNmbrgmsbrg.SetFocus

Object : cmdBatal                                                                Procedure : Click

 ThisForm.Kosong

 ThisForm.Gakaktif

 ThisForm.Tombolawal

 ThisForm.GrdMsBarang.Enabled = .T.

Object : cmdKeluar                                                              Procedure : Click

 Thisform.Release &&Menutup form

Object : GrdMsBarang                                                        Procedure : Click

 *Lihat penjelasan pada objek txtKdBrgMsBrg

 *Perintah dibawah ini akan dijalankan saat objek GrdMsBarang diClick

 ThisForm.txtKdbrgmsbrg.Value = KdBrgMsBrg

 ThisForm.txtNmbrgmsbrg.Value = NmBrgMsBrg

 ThisForm.txtJenismsbrg.Value = JenisMsBrg

 ThisForm.txtJlbrgmsbrg.Value = STR(JlBrgMsBrg,3,0)

 ThisForm.txtHargamsbrg.Value = STR(HargaMsBrg,9,0)

 ThisForm.Gakaktif

 ThisForm.cmdTambah.Enabled = .F.

 Thisform.cmdSimpan.Enabled = .F.

 ThisForm.cmdPerbaiki.Enabled = .T.

 ThisForm.cmdHapus.Enabled = .T.

 ThisForm.cmdBatal.Enabled = .T.

 Thisform.cmdKeluar.Enabled = .F.

Object : GrdMsBarang                                            Procedure : AfterRowColChange

 LPARAMETERS nColIndex

 *Perintah dibawah ini akan dijalankan saat tombol anak panah atas/bawah ditekan

 ThisForm.txtKdbrgmsbrg.Value = KdBrgMsBrg

 ThisForm.txtNmbrgmsbrg.Value = NmBrgMsBrg

 ThisForm.txtJenismsbrg.Value = JenisMsBrg

 ThisForm.txtJlbrgmsbrg.Value = STR(JlBrgMsBrg,3,0)

 ThisForm.txtHargamsbrg.Value = STR(HargaMsBrg,9,0)

 

Object : Form1                                                                       Procedure : Load

 SELECT 1 &&Membuka/berpindah pada ruang kerja 1 untuk tabel yang diperlukan

 USE MsBarang &&Mengaktifkan/membuka tabel MsBarang

 SET ORDER TO KdBrgMsBrg &&Mengaktifkan file index bernama KdBrgMsBrg

 SET FILTER TO .Not. DELETED() &&Menyaring data hanya yang tidak terhapus saja

Object : Form1                                                                       Procedure : Init

 *Perintah-perintah berikut akan dijalankan hanya sekali yaitu pada saat pertama kali form dipanggil

 ThisForm.Kosong &&Memanggil prosedur yang dibuat sendiri, dengan nama prosedur Kosong

 ThisForm.Gakaktif &&Memanggil Prosedur bernama GakAktif

 ThisForm.Tombolawal &&Memanggil Prosedur bernama TombolAwal

 

Object : Form1                                                                       Procedure : Unload

 *Perintah-perintah berikut akan dijalankan saat form ditutup

 SELECT 1

 USE &&Menutup/menonaktifkan tabel yang ada pada ruang kerja 1

 

Object : Form1                                                                       Procedure : Aktif

 *Perintah-perintah berikut akan membuat semua objek textbox menjadi bisa diubah isinya

 ThisForm.txtKdbrgmsbrg.enabled = .T.

 ThisForm.txtNmbrgmsbrg.enabled = .T.

 ThisForm.txtJenismsbrg.enabled = .T.

 ThisForm.txtJlbrgmsbrg.enabled = .T.

 ThisForm.txtHargamsbrg.enabled = .T.

 

Object : Form1                                                                       Procedure : GakAktif

 *Perintah-perintah berikut akan membuat semua objek textbox menjadi tidak bisa diubah isinya

 ThisForm.txtKdbrgmsbrg.enabled = .F.

 ThisForm.txtNmbrgmsbrg.enabled = .F.

 ThisForm.txtJenismsbrg.enabled = .F.

 ThisForm.txtJlbrgmsbrg.enabled = .F.

 ThisForm.txtHargamsbrg.enabled = .F.

Object : Form1                                                                       Procedure : Kosong

 *Perintah-perintah berikut akan mengosongkan semua objek textbox

 ThisForm.txtKdbrgmsbrg.Value = “”

 ThisForm.txtNmbrgmsbrg.Value = “”

 ThisForm.txtJenismsbrg.Value = “”

 ThisForm.txtJlbrgmsbrg.Value = “”

 ThisForm.txtHargamsbrg.Value = “”

Object : Form1                                                                       Procedure : TombolAwal

 *Perintah-perintah berikut akan mengatur semua command button menjadi bisa diclick (.T.) atau tidak (.F.)

 ThisForm.cmdTambah.Enabled = .T.

 ThisForm.cmdSimpan.Enabled = .F.

 ThisForm.cmdHapus.Enabled = .F.

 ThisForm.cmdPerbaiki.Enabled = .F.

 Thisform.cmdBatal.Enabled = .F.

 ThisForm.cmdKeluar.Enabled = .T.

 *Perintah-perintah berikut akan mengatur semua command button menjadi tidak bisa langsung focus (TabStop)

 ThisForm.cmdTambah.TabStop = .F.

 ThisForm.cmdSimpan.TabStop = .F.

 ThisForm.cmdHapus.TabStop = .F.

 ThisForm.cmdPerbaiki.TabStop = .F.

 Thisform.cmdBatal.TabStop = .F.

 ThisForm.cmdKeluar.TabStop = .F.

 ThisForm.cmdSimpan.Caption = “\<SIMPAN” &&Mengubah caption command simpan menjadi SIMPAN

Object : txtKdBrgMsBrg                                                        Procedure : KeyPress

 LPARAMETERS nKeyCode, nShiftAltCtrl

 IF nKeyCode = 13 THEN &&Jika Tombol yang ditekan adalah tombol Enter (ASCII 13)

    SELECT 1

    SEEK RTRIM(ThisForm.txtKdbrgmsbrg.Value) &&Mencari data Kode Barang yang sesuai dengan data dalam txtKdBrgMsBrg

    IF FOUND() THEN &&Jika Pencarian tsb ditemukan

          ThisForm.txtNmbrgmsbrg.Value = NmBrgMsBrg &&Menampilkan data NmBrgMsBrg ke textboxnya

          ThisForm.txtJenismsbrg.Value = JenisMsBrg &&Menampilkan data JenisMsBrg ke textboxnya

          ThisForm.txtJlbrgmsbrg.Value = STR(JlBrgMsBrg,3,0) &&Menampilkan data JlBrgMsBrg ke textboxnya sekaligus dikonversi menjadi type character atau string

          ThisForm.txtHargamsbrg.Value = STR(HargaMsBrg,9,0) &&Menampilkan data HargaMsBrg ke textboxnya sekaligus dikonversi menjadi type character atau string

          ThisForm.Gakaktif &&Memanggil prosedur GakAktif

          Thisform.cmdSimpan.Enabled = .F.

          ThisForm.cmdPerbaiki.Enabled = .T.

          ThisForm.cmdHapus.Enabled = .T.

          ThisForm.GrdMsBarang.Refresh &&Memperbaharui isi/tampilan dalam grid

          ThisForm.GrdMsBarang.Enabled = .F. &&Membuat Grid tidak bisa di click

    ELSE

          ThisForm.txtNmbrgmsbrg.SetFocus &&Meletakan kursor pada textbox NmBrgMsBrg

    ENDIF

 ENDIF

Object : txtNmBrgMsBrg                                                      Procedure : KeyPress

 LPARAMETERS nKeyCode, nShiftAltCtrl

 IF nKeyCode = 13 Then

    ThisForm.txtJenismsbrg.SetFocus

 ENDIF

 

Object : txtJenisMsBrg                                                          Procedure : KeyPress

 LPARAMETERS nKeyCode, nShiftAltCtrl

 IF nKeycode = 13 Then

    ThisForm.txtJlbrgmsbrg.SetFocus

 ENDIF

Object : txtJlBrgMsBrg                                                          Procedure : KeyPress

 LPARAMETERS nKeyCode, nShiftAltCtrl

 IF nKeycode = 13 Then

    ThisForm.txtHargamsbrg.SetFocus

 ENDIF

Object : txtHargaMsBrg                                                       Procedure : KeyPress

 LPARAMETERS nKeyCode, nShiftAltCtrl

 IF nKeycode = 13 Then

    ThisForm.cmdsimpan.TabStop = .T. &&Menjadikan command simpan bisa menerima focus

 ENDIF

Object : cmdTambah                                                          Procedure : Click

 ThisForm.cmdTambah.Enabled = .F.

 ThisForm.cmdKeluar.Enabled = .F.

 ThisForm.cmdBatal.Enabled = .T.

 ThisForm.cmdSimpan.Enabled = .T.

 ThisForm.Kosong

 ThisForm.aktif

 ThisForm.txtKdbrgmsbrg.SetFocus &&Memfocuskan kursor pada textbox txtkdBrgMsBrg

Object : cmdSimpan                                                           Procedure : Click

 IF EMPTY(ThisForm.txtKdbrgmsbrg.Value) .or. EMPTY(ThisForm.TxtNmbrgmsbrg.Value) .Or. EMPTY(ThisForm.TxtJenismsbrg.Value) .or. EMPTY(ThisForm.TxtJlbrgmsbrg.Value) .or. EMPTY(ThisForm.TxtHargamsbrg.Value) THEN &&Memeriksa apakah textbox yang ada masih kosong (EMPTY)

    MESSAGEBOX(“Upss…, Data Belum Diisi Semua”+

Comments

  1. Pagi Pak, mau tanya lagi ni hehe

    bisa ga kita memindah item di listbox ke listbox/textbox tertentu? misalnya pada listbox terdapat item : “Putu” dan “Artha” . nah item “Putu” nnti dipindah ke listbox/textbox 1 sedangkan untuk item “Artha” dipindah ke listbox/textbox 2 ?
    Mohon Bimbingannya Pak, Trims

    Logikanya Bisa aja mas, coba pake kendali IF jadi jika Item1 nilainya Putu maka dipindah ke textbox1 jika tidak maka dipindah ke textbox2, mungkin begitu ya…:) Ada yang mau nambahkan silahkan…!

  2. Pak bagai mana cara membuat sebuah program angsurans pinjaman

    Logikanya :
    = Tentukan dulu Nilai Pinjaman sekaligus Bunganya kalo ada
    = Tentukan berapa lama pinjaman tersebut di angsur (1, 2, 3 bulan atau lebih) sesuai kebutuhan
    = Selanjutnya Nilai Pinjaman dibagi dengan jumlah bulan adalah nilai angsuran yang harus dibayarkan setiap bulan

    Misalnya Nilai Pinjaman 1.000.000, Bunga Pinjaman 30.000, Jadi Nilai Pinjaman dan Bunga 1.030.000
    Jika pinjaman tersebut harus lunas dalam waktu 5 bulan atau 5 kali angsuran maka angsurannya 1.030.000 / 5 sama dengan 206.000 per bulannya.

    Lha Kalo Kode Programnya disesuaikan dengan bahasa pemrograman apa yang akan digunakan, oke semoga dapat membantu.

Comments are closed