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 :
- Buka project yang telah dibuat sebelumnya.
- Pada jendela Project Manager, click tab Documents
- Dalam tab Documents tersebut click-lah nama form yang akan diberi source code
- Click tombol Modify sehingga form yang dimaksud ditampilkan
- 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)
- Tuliskan source code program sesuai dengan logika jalannya program.
- 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”+
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
Pak bagai mana cara membuat sebuah program angsurans pinjaman