teknik merancang program aplikasi (code) pada visual foxpro

82
77 TABELKU Tiga program aplikasi terdahulu tidak melibatkan file tabel (DBF), sedangkan program aplikasi TabelKu ini melibatkan 1 (satu) tabel (DBF). Di mana Anda dapat mengisi data, mengubah data, meng- hapus data, serta menelusuri tabel dari satu record ke record lainnya. Pembahasan dalam program aplikasi TabelKu ini difokuskan pada pembuatan file kode (CODE), yaitu file yang berekstensi PRG. Program TabelKu berhubungan dengan 1 tabel, yaitu TabelKu.DBF. Kita masih memanfaatkan form utama Visual FoxPro dan beberapa objek Label, TextBox, Grid, dan CommandButton untuk menangani tabel TabelKu.DBF. Struktur tabel tabelKu.DBF adalah sebagai berikut.

Upload: sahida-dinulloh

Post on 24-Jun-2015

1.131 views

Category:

Documents


16 download

TRANSCRIPT

Page 1: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

77

TABELKU Tiga program aplikasi terdahulu tidak melibatkan file tabel (DBF), sedangkan program aplikasi TabelKu ini melibatkan 1 (satu) tabel (DBF). Di mana Anda dapat mengisi data, mengubah data, meng-hapus data, serta menelusuri tabel dari satu record ke record lainnya.

Pembahasan dalam program aplikasi TabelKu ini difokuskan pada pembuatan file kode (CODE), yaitu file yang berekstensi PRG. Program TabelKu berhubungan dengan 1 tabel, yaitu TabelKu.DBF. Kita masih memanfaatkan form utama Visual FoxPro dan beberapa objek Label, TextBox, Grid, dan CommandButton untuk menangani tabel TabelKu.DBF.

Struktur tabel tabelKu.DBF adalah sebagai berikut.

Page 2: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

78

No Field Type Width Keterangan

1 Nama C 30 Nama

2 JenKel C 9 Jenis Kelamin

3 Alamat C 30 Alamat

4 Kota C 30 Nama Kota

5 KodePos C 5 Kode Pos

Apabila program aplikasi TabelKu dijalankan dan file TabelKu.dbf belum ada, maka otomatis akan dibuat file baru TabelKu.dbf. Dengan demikian, pemakai tidak direpotkan untuk membuat tabel tersebut di atas.

6.1 Desain Program Bentuk tampilan dari program TabelKu terlihat seperti pada gambar di bawah ini, yaitu sebagai sarana interaktif antara pemakai dengan database (tabel). Semua tabel ditampilkan dalam Grid sebagai jendela untuk menelusuri tabel, kemudian masing-masing record ditampilkan dalam TextBox. Fasilitas yang tersedia, antara lain pe-nambahan data baru, ubah data, hapus data, dan pengurutan data.

Page 3: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

79

Gambar 6.1 Desain program aplikasi TabelKu

6.2 Logika Program Dasar utama pembuatan program TabelKu ini adalah jendela Grid sebagai sarana interaktif antara pemakai dengan tabel TabelKu.DBF. Untuk itu, pada saat program dijalankan, maka langsung akan terhubung dengan tabel TabelKu.DBF. Kemudian semua data ditam-pilkan dalam objek Grid, sedangkan masing-masing record ditam-pilkan dalam objek TextBox.

Di baris bawah terdapat 10 objek CommandButton yang berfungsi sebagai navigator, yang digunakan untuk penelusuran record, tambah data (ADD), ubah data (EDIT), hapus data (DEL), dan pengurutan data (SORT).

Page 4: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

80

Pengurutan data dilakukan dengan teknik external sorting BUBBLE SORT.

Algoritma program aplikasi TabelKu adalah sebagai berikut:

• Mengatur variabel _SCREEN untuk diisi dengan 13 objek Label, 6 objek TextBox, 1 objek OptionGroup, 1 objek Grid, dan 10 objek CommandButton.

• Koneksi dengan tabel TabelKu.DBF pada saat dijalankan per-tama kali.

• Menampilkan semua data di dalam objek Grid.

• Menampilkan satu data (record) di dalam objek TextBox.

• Navigasi (pergerakan) dari satu record ke record lainnya dikontrol dalam objek CommandButton. Demikian juga fasilitas tambah data (ADD), ubah data (EDIT), hapus data (DEL), dan pengurutan data (SORT) dikontrol dalam objek CommandButton ditambah dengan ABOUT dan CLOSE.

Program aplikasi TabelKu menampilkan isi tabel TabelKu.dbf. Data yang terdapat di dalamnya, antara lain Nama, Jenis Kelamin, Alamat, Kota, dan Kode Pos. Di baris atas ditampilkan nama hari dan pasaran posisi tanggal saat ini dan ditampilkan juga jam digital. Kemudian ditampilkan masing-masing data (record) serta semua data dalam grid. Di baris bawah ditampilkan navigasi (pergerakan) record, button untuk tambah data (ADD), ubah data (EDIT), hapus data (DELETE), dan pengurutan data (SORT), serta button About yang akan menampilkan keterangan kecil tentang program ini, dan button Close yang akan menampilkan pilihan untuk mengakhiri program. Jika dipilih YES, maka program akan berhenti dan kembali ke Windows.

Secara sederhana, program aplikasi TabelKu dapat digambarkan sebagai berikut.

Page 5: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

81

Gambar 6.2 Flowchart program aplikasi TabelKu

6.3 Kode Program Berikut ini listing kode program TabelKu.

****************************************************** * Nama Program : TabelKu.prg * * Keterangan : menggunakan program aplikasi (CODE) * * menangani 1(satu) tabel TabelKu.dbf * * menggunakan perintah reguler tabel * * (USE,APPEND,REPLACE,DELETE,PACK) * * - single user version (exclusive) - * ****************************************************** *--- Set Environtment ---* SET TALK OFF SET STATUS OFF

Persiapan

Menampilkan Data

Start

Stop

Mengatur form _SCREEN

Menampilkan semua data dalam objek Grid dan menampilkan satu data dalam objek TextBox

Navigasi Record

ADD EDIT DELETE SORT ABOUT CLOSE

Page 6: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

82

SET STATUS BAR OFF SET SYSMENU OFF SET ESCAPE ON SET CENTURY ON SET EXCLUSIVE ON SET DATE ITALIAN *--- bersihkan memori ---* CLEAR ALL CLOSE ALL CLOSE TABLES ALL *--- persiapan variabel public ---* PUBLIC oFormSort As Form PUBLIC nMaxRec * jumlah record maksimum (disesuaikan kebutuhan) nMaxRec = 1000 *--- persiapan tampilan form _SCREEN ---* WITH _Screen && form _SCREEN (milik Visual FoxPro) .Top = 0 && posisi atas .Left = 0 && posisi kiri .Width = 540 && lebar form .Height = 485 && tinggi form .AutoCenter = .T. && form di tengah layar monitor .ControlBox = .F. && button controlbox dinon-aktifkan .Closable = .F. && button close dinon-aktifkan .MaxButton = .F. && button max dinon-aktifkan .MinButton = .F. && button min dinon-aktifkan .ShowTips = .T. && tampilkan semua tooltip text .BorderStyle = 2 && border diset fix dialog .Caption = "TabelKu - menggunakan perintah native "+; "(USE,APPEND,REPLACE,PACK)" && judul form .BackColor = RGB(128,128,255) && warna latar form **************************************************** * cara mengisi form _Screen, yaitu: * * 1. menambahkan objek (nama objek,nama definisi), * * kemudian * * 2. mendefinisikan objek bersama atributnya * * (DEFINE CLASS) * **************************************************** * tambahkan objek Label .AddObject("Judul1","myJudul1") && label Judul 1 .AddObject("Judul2","myJudul2") && label Judul 2 .AddObject("Waktu", "myWaktu") && timer Waktu Digital .AddObject("Tanggal","myTanggal") && label Tanggal .AddObject("Jam", "myJam") && label Jam Digital .AddObject("Versi", "myVersion") && label Version .AddObject("Kode", "myKode") && label Kode .AddObject("Nama", "myNama") && label Nama .AddObject("JenKel","myJenKel") && label Jenis Kelamin .AddObject("Alamat","myAlamat") && label Alamat .AddObject("Kota", "myKota") && label Kota .AddObject("KodePos","myKodePos") && label Kode Pos * tambahkan objek Label titik-dua .AddObject("Titik01","myTitik01") && label Titik Dua .AddObject("Titik02","myTitik02") && label Titik Dua .AddObject("Titik03","myTitik03") && label Titik Dua .AddObject("Titik04","myTitik04") && label Titik Dua .AddObject("Titik05","myTitik05") && label Titik Dua .AddObject("Titik06","myTitik06") && label Titik Dua * tambahkan objek No.Record - label dan text box .AddObject("NoRecord", "myNoRecord") && label No.Record .AddObject("txtNoRec", "myNoRec") && No.Record

Page 7: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

83

.AddObject("txtTotRec","myTotRec") && Total Record * tambahkan objek TextBox .AddObject("txtKode", "myTxtKode") && Kode .AddObject("txtNama", "myTxtNama") && Nama .AddObject("optJenKel", "myOptJenKel") && Jenis Kelamin .AddObject("txtAlamat", "myTxtAlamat") && Alamat .AddObject("txtKota", "myTxtKota") && Kota .AddObject("txtKodePos","myTxtKodePos") && Kode Pos * tambahkan objek Grid .AddObject("myGrid","myGrdGrid") && grid myGrid * tambahkan objek Command Button .AddObject("cmdFirst", "myFirst") && button First .AddObject("cmdPrev", "myPrev") && button Previous .AddObject("cmdNext", "myNext") && button Next .AddObject("cmdLast", "myLast") && button Last .AddObject("cmdAdd", "myAdd") && button Add .AddObject("cmdEdit", "myEdit") && button Edit .AddObject("cmdDelete","myDelete") && button Delete .AddObject("cmdSort", "mySort") && button Sort .AddObject("cmdAbout", "myAbout") && button About .AddObject("cmdClose", "myClose") && button Close * tampilkan form _SCREEN .Show ENDWITH Start() && aktifkan prosedur Start() SetField(.F.) && aktifkan prosedur SetField() SetButton(.T.) && aktifkan prosedur SetButton() GridRefresh() && aktifkan prosedur GridRefresh() TampilkanData(.T.) && aktifkan prosedur TampilkanData() READ EVENTS && proses semua event RETURN && selesai ***************************************** * definisi objek timer, label, textbox, * * optiongroup dan command button * ***************************************** *--- definisi timer myWaktu ---* DEFINE CLASS myWaktu AS Timer Top = 0 && posisi atas Left = 0 && posisi kiri Interval = 1000 && interval 1 detik PROCEDURE Timer * label Jam diisi jam 00:00:00 _Screen.Jam.Caption = TIME() ENDPROC ENDDEFINE *--- definisi label myTanggal ---* DEFINE CLASS myTanggal AS Label Top = 10 && posisi atas Left = 190 && posisi kiri Width = 268 && lebar label Height = 20 && tinggi label Caption = "" && isi label Alignment = 1 && rata kanan FontName = "Arial" && jenis huruf FontSize = 10 && besar huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && label tampil ENDDEFINE *--- definisi label myJam ---* DEFINE CLASS myJam AS Label Top = 10 && posisi atas

Page 8: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

84

Left = 465 && posisi kiri Width = 50 && lebar textbox Height = 20 && tinggi label Caption = TIME() && label diisi jam 00:00:00 Alignment = 1 && rata kanan FontName = "Arial" && jenis huruf FontSize = 10 && besar huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && label tampil ENDDEFINE *--- definisi label myVersion ---* DEFINE CLASS myVersion AS Label Top = 35 && posisi atas Left = 190 && posisi kiri Width = 155 && lebar label Height = 20 && tinggi label Caption = "SINGLE USER VERSION" && isi label Alignment = 2 && di tengah FontName = "Arial" && jenis huruf FontSize = 10 && besar huruf FontBold = .T. && huruf tebal ForeColor = RGB(0,0,255) && warna huruf biru BackColor = _Screen.BackColor && warna dasar Visible = .T. && label tampil ENDDEFINE *--- definisi label myNoRecord ---* DEFINE CLASS myNoRecord AS Label Top = 35 && posisi atas Left = 350 && posisi kiri Width = 50 && lebar label Height = 20 && tinggi label Caption = "No.Rec.:" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && besar huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && label tampil ENDDEFINE *--- definisi textbox myNoRec ---* DEFINE CLASS myNoRec AS TextBox Top = 35 && posisi atas Left = 410 && posisi kiri Width = 50 && lebar textbox Height = 24 && tinggi textbox Value = 0 && isi textbox FontName = "Arial" && jenis huruf FontSize = 9 && besar huruf BackColor = _Screen.BackColor && warna dasar DisabledForeColor = RGB(255,0,0) && warna non-aktif DisabledBackColor = RGB(224,224,224) && warna non-aktif InputMask = "99999" && bentuk masukan Format = "99999" && bentuk tampilan Enabled = .F. && textbox tidak aktif Visible = .T. && textbox tampil ENDDEFINE *--- definisi textbox myTotRec ---* DEFINE CLASS myTotRec AS TextBox Top = 35 && posisi atas Left = 465 && posisi kiri Width = 50 && lebar textbox Height = 24 && tinggi textbox Value = 0 && isi textbox

Page 9: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

85

FontName = "Arial" && jenis huruf FontSize = 9 && besar huruf BackColor = _Screen.BackColor && warna dasar DisabledForeColor = RGB(255,0,0) && warna non-aktif DisabledBackColor = RGB(224,224,224) && warna non-aktif InputMask = "99999" && bentuk masukan Format = "99999" && bentuk tampilan Enabled = .F. && textbox tidak aktif Visible = .T. && textbox tampil ENDDEFINE *--- 2 judul memberi efek bayangan ---* *--- definisi label myJudul1 ---* DEFINE CLASS myJudul1 AS Label && sebagai bayangan judul Top = 12 && posisi atas Left = 11 && posisi kiri Width = 180 && lebar label Height = 22 && tinggi label Caption = "NAMA DAN ALAMAT" && isi label FontName = "Arial" && jenis huruf FontBold = .T. && huruf tebal FontSize = 12 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf hitam BackStyle = 0 && transparan BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi label myJudul2 ---* DEFINE CLASS myJudul2 AS Label && sebagai judul (merah) Top = 10 && posisi atas Left = 10 && posisi kiri Width = 180 && lebar label Height = 22 && tinggi label Caption = "NAMA DAN ALAMAT" && isi label FontName = "Arial" && jenis huruf FontBold = .T. && huruf tebal FontSize = 12 && ukuran huruf ForeColor = RGB(255,0,0) && warna huruf merah BackStyle = 0 && transparan BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi label myKode ---* DEFINE CLASS myKode AS Label Top = 35 && posisi atas Left = 10 && posisi kiri Width = 100 && lebar label Height = 20 && tinggi label Caption = " 1. Kode" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi label myNama ---* DEFINE CLASS myNama AS Label Top = 60 && posisi atas Left = 10 && posisi kiri Width = 100 && lebar label Height = 20 && tinggi label Caption = " 2. Nama" && isi label

Page 10: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

86

FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi label myJenKel ---* DEFINE CLASS myJenKel AS Label Top = 85 && posisi atas Left = 10 && posisi kiri Width = 100 && lebar label Height = 20 && tinggi label Caption = " 3. Jenis Kelamin" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi label myAlamat ---* DEFINE CLASS myAlamat AS Label Top = 110 && posisi atas Left = 10 && posisi kiri Width = 100 && lebar label Height = 20 && tinggi label Caption = " 4. Alamat" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi label myKota ---* DEFINE CLASS myKota AS Label Top = 135 && posisi atas Left = 10 && posisi kiri Width = 100 && lebar label Height = 20 && tinggi label Caption = " 5. Kota" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi label myKodePos ---* DEFINE CLASS myKodePos AS Label Top = 160 && posisi atas Left = 10 && posisi kiri Width = 100 && lebar label Height = 20 && tinggi label Caption = " 6. Kode Pos" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi label Titik01 ---* DEFINE CLASS myTitik01 AS Label Top = 35 && posisi atas

Page 11: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

87

Left = 120 && posisi kiri Width = 10 && lebar label Height = 20 && tinggi label Caption = ":" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi label Titik02 ---* DEFINE CLASS myTitik02 AS Label Top = 60 && posisi atas Left = 120 && posisi kiri Width = 10 && lebar label Height = 20 && tinggi label Caption = ":" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi label Titik03 ---* DEFINE CLASS myTitik03 AS Label Top = 85 && posisi atas Left = 120 && posisi kiri Width = 10 && lebar label Height = 20 && tinggi label Caption = ":" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi label Titik04 ---* DEFINE CLASS myTitik04 AS Label Top = 110 && posisi atas Left = 120 && posisi kiri Width = 10 && lebar label Height = 20 && tinggi label Caption = ":" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi label Titik05 ---* DEFINE CLASS myTitik05 AS Label Top = 135 && posisi atas Left = 120 && posisi kiri Width = 10 && lebar label Height = 20 && tinggi label Caption = ":" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor

Page 12: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

88

ENDDEFINE *--- definisi label Titik05 ---* DEFINE CLASS myTitik06 AS Label Top = 160 && posisi atas Left = 120 && posisi kiri Width = 10 && lebar label Height = 20 && tinggi label Caption = ":" && isi label FontName = "Arial" && jenis huruf FontSize = 10 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf BackColor = _Screen.BackColor && warna dasar Visible = .T. && tampil dilayar monitor ENDDEFINE *--- definisi textbox myTxtKode ---* DEFINE CLASS myTxtKode AS TextBox Top = 35 && posisi atas Left = 135 && posisi kiri Width = 50 && lebar textbox Height = 24 && tinggi textbox FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledForeColor = RGB(0,0,255) && warna non-aktif DisabledBackColor = RGB(224,224,224) && warna non-aktif MaxLength = 5 && panjang maksimum isian textbox Value = "" && nilai textbox dokosongkan Visible = .T. && tampil di layar monitor ENDDEFINE *--- definisi textbox myTxtNama ---* DEFINE CLASS myTxtNama AS TextBox Top = 60 && posisi atas Left = 135 && posisi kiri Width = 380 && lebar textbox Height = 24 && tinggi textbox FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledForeColor = RGB(0,0,255) && warna non-aktif DisabledBackColor = RGB(224,224,224) && warna non-aktif MaxLength = 50 && panjang maksimum isian textbox Value = "" && nilai textbox dokosongkan Visible = .T. && tampil di layar monitor ENDDEFINE *--- definisi optiongroup myOptJenKel ---* DEFINE CLASS myOptJenKel AS OptionGroup Top = 85 && posisi atas Left = 135 && posisi kiri Width = 200 && lebar textbox Height = 24 && tinggi textbox FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledForeColor = RGB(0,0,255) && warna non-aktif DisabledBackColor = RGB(224,224,224) && warna non-aktif ButtonCount = 2 && 2 pilihan Laki-laki atau Perempuan Enabled = .T. && optiongroup di-aktifkan Visible = .T. && tampil di layar monitor

Page 13: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

89

ENDDEFINE *--- definisi textbox myTxtAlamat ---* DEFINE CLASS myTxtAlamat AS TextBox Top = 110 && posisi atas Left = 135 && posisi kiri Width = 380 && lebar textbox Height = 24 && tinggi textbox FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledForeColor = RGB(0,0,255) && warna non-aktif DisabledBackColor = RGB(224,224,224) && warna non-aktif MaxLength = 50 && panjang maksimum isian textbox Value = "" && nilai textbox dokosongkan Visible = .T. && tampil di layar monitor ENDDEFINE *--- definisi textbox myTxtKota ---* DEFINE CLASS myTxtKota AS TextBox Top = 135 && posisi atas Left = 135 && posisi kiri Width = 380 && lebar textbox Height = 24 && tinggi textbox FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledForeColor = RGB(0,0,255) && warna non-aktif DisabledBackColor = RGB(224,224,224) && warna non-aktif MaxLength = 50 && panjang maksimum isian textbox Value = "" && nilai textbox dokosongkan Visible = .T. && tampil di layar monitor ENDDEFINE *--- definisi textbox myTxtKodePos ---* DEFINE CLASS myTxtKodePos AS TextBox Top = 160 && posisi atas Left = 135 && posisi kiri Width = 60 && lebar textbox Height = 24 && tinggi textbox FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledForeColor = RGB(0,0,255) && warna non-aktif DisabledBackColor = RGB(224,224,224) && warna non-aktif MaxLength = 5 && panjang maksimum isian textbox Value = "" && nilai textbox dokosongkan Visible = .T. && tampil di layar monitor ENDDEFINE *--- definisi grid myGrdGrid ---* DEFINE CLASS myGrdGrid AS Grid Top = 185 && posisi atas Left = 10 && posisi kiri Width = 520 && lebar grid Height = 265 && tinggi grid ColumnCount = 6 && jumlah kolom FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,255) && warna huruf SplitBar = .F. && splitbar di-non-aktifkan * tambahkan prosedur AfterRowColChange

Page 14: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

90

PROCEDURE AfterRowColChange * parameter harus ada, tapi tidak digunakan LPARAMETERS nColIndex * aktifkan prosedur TampilkanData() TampilkanData(.T.) ENDPROC ENDDEFINE *--- definisi command button myFirst ---* DEFINE CLASS myFIRST AS COMMANDBUTTON Top = 450 && posisi atas Left = 10 && posisi kiri Width = 40 && lebar button Height = 25 && tinggi button Caption = "|<" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf ToolTipText = "Record Awal" && tips kecil Visible = .T. && tampil di layar monitor PROCEDURE Click && aktif, jika button FIRST diklik SELECT TabelKu && aktifkan tabel TabelKu.dbf IF RECCOUNT() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") ELSE && jika file isi, maka: IF RECNO()=1 && jika posisi di record awal, maka: * tampilkan pesan TampilkanSorry("SORRY.....top of file!") ELSE && jika posisi tidak di record awal, maka: * aktifkan prosedur TampilkanRecord() TampilkanRecord("FIRST") ENDIF ENDIF ENDPROC ENDDEFINE *--- definisi command button myPrev ---* DEFINE CLASS myPREV AS COMMANDBUTTON Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdFirst.Left + ; _Screen.cmdFirst.Width && posisi kiri Width = _Screen.cmdFirst.Width && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "<" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf ToolTipText = "Record Sebelumnya" && tips kecil Visible = .T. && tampil di layar monitor PROCEDURE Click && aktif, jika button NEXT diklik SELECT TabelKu && aktifkan tabel TabelKu.dbf IF RECCOUNT() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") ELSE && jika file isi, maka: IF RECNO()=1 && jika posisi di record awal, maka: * tampilkan pesan TampilkanSorry("SORRY.....top of file!") ELSE * aktifkan prosedur TampilkanRecord() TampilkanRecord("PREV") ENDIF

Page 15: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

91

ENDIF ENDPROC ENDDEFINE *--- definisi command button myNext ---* DEFINE CLASS myNEXT AS COMMANDBUTTON Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdPrev.Left + ; _Screen.cmdPrev.Width && posisi kiri Width = _Screen.cmdFirst.Width && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = ">" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf ToolTipText = "Record Berikutnya" && tips kecil Visible = .T. && tampil di layar monitor PROCEDURE Click && aktif, jika button NEXT diklik SELECT TabelKu && aktifkan tabel TabelKu.dbf IF RECCOUNT() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") ELSE && jika file isi, maka: * jika posisi di record akhir, maka: IF RECNO() = RECCOUNT() * tampilkan pesan TampilkanSorry("SORRY.....end of file!") ELSE && jika posisi tidak di record akhir, maka: * aktifkan prosedur TampilkanRecord() TampilkanRecord("NEXT") ENDIF ENDIF ENDPROC ENDDEFINE *--- definisi command button myLast ---* DEFINE CLASS myLAST AS COMMANDBUTTON Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdNext.Left + ; _Screen.cmdNext.Width && posisi kiri Width = _Screen.cmdFirst.Width && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = ">|" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf ToolTipText = "Record Akhir" && keterangan singkat Visible = .T. && tampil di layar monitor PROCEDURE Click && aktif, jika button LAST diklik SELECT TabelKu && aktifkan tabel TabelKu.dbf IF RECCOUNT() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") ELSE && jika file isi, maka: * jika posisi di record akhir, maka: IF RECNO() = RECCOUNT() * tampilkan pesan TampilkanSorry("SORRY.....end of file!") ELSE && jika posisi tidak di record akhir, maka: * aktifkan prosedur TampilkanRecord() TampilkanRecord("LAST") ENDIF ENDIF

Page 16: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

92

ENDPROC ENDDEFINE *--- definisi command button myAdd ---* DEFINE CLASS myADD AS COMMANDBUTTON Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdLast.Left + ; _Screen.cmdLast.Width && posisi kiri Width = _Screen.cmdFirst.Width + 20 && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "ADD" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf ToolTipText = "Tambah Data" && tips kecil Visible = .T. && tampil di layar monitor PROCEDURE Click && aktif, jika button ADD diklik LOCAL nRecPos && variabel lokal SELECT TabelKu && aktifkan tabel TabelKu.dbf * periksa isi button IF ThisForm.cmdAdd.Caption = "ADD" && tambah data * jika jumlah record maksimum, maka: IF RECCOUNT() >= nMaxRec * tampilkan pesan TampilkanSorry("SORRY.....maksimum record 1.000!") * posisi kursor di field Kode ThisForm.txtKode.SetFocus ELSE && jika jumlah record belum maksimum, maka: * aktifkan prosedur TampilkanRecord() TampilkanRecord("ADD") ENDIF ELSE && simpan data (SAVE) * jika Kode kosong, maka: IF EMPTY(ThisForm.txtKode.Value) * tampilkan pesan TampilkanSorry("SORRY.....Kode kosong!") * posisi kursor di field Kode ThisForm.txtKode.SetFocus ELSE && jika Kode isi, maka: nRecPos = RECNO() && posisi record sekarang * cari Kode yang sama LOCATE FOR TabelKu.Kode=ThisForm.txtKode.Value IF FOUND() && jika Kode sama, maka: * tampilkan pesan TampilkanSorry("SORRY.....Kode sudah ada!") * posisi kursor di field Kode ThisForm.txtKode.SetFocus GO nRecPos && menuju record xRecPos ELSE && jika Kode tidak sama, maka: APPEND BLANK && tambahkan record kosong * isi dengan data berikut ini: REPLACE TabelKu.Kode WITH ; ThisForm.txtKode.Value REPLACE TabelKu.Nama WITH ; ThisForm.txtNama.Value IF ThisForm.optJenKel.Value = 1 REPLACE TabelKu.JenKel WITH "Laki-laki" ELSE REPLACE TabelKu.JenKel WITH "Perempuan" ENDIF REPLACE TabelKu.Alamat WITH ; ThisForm.txtAlamat.Value

Page 17: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

93

REPLACE TabelKu.Kota WITH ; ThisForm.txtKota.Value REPLACE TabelKu.KodePos WITH ; ThisForm.txtKodePos.Value FLUSH && pastikan data disimpan GO BOTTOM && menuju record akhir * aktifkan prosedur TampilkanRecord() TampilkanRecord("SAVE") ENDIF ENDIF ENDIF ENDPROC ENDDEFINE *--- definisi command button myEdit ---* DEFINE CLASS myEDIT AS COMMANDBUTTON Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdAdd.Left + ; _Screen.cmdAdd.Width && posisi kiri Width = _Screen.cmdFirst.Width + 20 && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "EDIT" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf ToolTipText = "Ubah Data" && tips kecil Visible = .T. && tampil di layar monitor PROCEDURE Click && aktif, jika button EDIT diklik SELECT TabelKu && aktifkan tabel TabelKu.dbf IF RECCOUNT() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") ELSE && jika file isi, maka: DO CASE && periksa isi (caption) button CASE ThisForm.cmdEdit.Caption="EDIT" && ubah data * aktifkan prosedur TampilkanRecord() TampilkanRecord("EDIT") CASE ThisForm.cmdEdit.Caption="SAVE" && simpan data * simpan data berikut ini: REPLACE TabelKu.Nama WITH ; ThisForm.txtNama.Value IF ThisForm.optJenKel.Value = 1 REPLACE TabelKu.JenKel WITH "Laki-laki" ELSE REPLACE TabelKu.JenKel WITH "Perempuan" ENDIF REPLACE TabelKu.Alamat WITH ; ThisForm.txtAlamat.Value REPLACE TabelKu.Kota WITH ; ThisForm.txtKota.Value REPLACE TabelKu.KodePos WITH ; ThisForm.txtKodePos.Value FLUSH && pastikan data disimpan dalam tabel * aktifkan prosedur TampilkanRecord() TampilkanRecord("SAVE") OTHERWISE && batal (CANCEL) * aktifkan prosedur TampilkanRecord() TampilkanRecord("SAVE") ENDCASE ENDIF ENDPROC ENDDEFINE

Page 18: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

94

*--- definisi command button myDelete ---* DEFINE CLASS myDELETE AS COMMANDBUTTON Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdEdit.Left + ; _Screen.cmdEdit.Width && posisi kiri Width = _Screen.cmdFirst.Width + 20 && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "DELETE" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf ToolTipText = "Hapus Data" && keterangan singkat Visible = .T. && tampil di layar monitor PROCEDURE Click && aktif, jika button DELETE diklik LOCAL xYesNo, xRecSek && variabel lokal SELECT TabelKu && aktifkan tabel TabelKu.dbf xRecSek = RECNO() && variabel posisi record sekarang IF RECCOUNT() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") ELSE && jika file isi, maka: * periksa isi button (Caption) IF ThisForm.cmdDelete.Caption="DELETE" && hapus data * tampilkan pesan untuk memilih YES atau NO IF MESSAGEBOX("Anda ingin menghapus data ini?",; 4+32+256,"Konfirmasi") = 6 && pilih YES DELETE && hapus data PACK && pastikan data terhapus dalam tabel * aktifkan prosedur GridRefresh() GridRefresh() * aktifkan prosedur SetButton() SetButton(.T.) * aktifkan prosedur SetField() SetField(.F.) IF RECCOUNT()=0 && jika tabel kosong, maka: * aktifkan prosedur TampilkanData() TampilkanData(.F.) * tampilkan pesan MESSAGEBOX("Data Anda sudah dihapus.....!"+; CHR(13)+CHR(13)+"SORRY.....file kosong!",; 0,"Delete") ELSE * jika posisi record > jumlah record IF xRecSek > RECCOUNT() GO BOTTOM && menuju record akhir ELSE GO xRecSek && menuju record sekarang ENDIF * aktifkan prosedur TampilkanData() TampilkanData(.T.) * tampilkan pesan MESSAGEBOX("Data Anda sudah dihapus.....!",; 0,"Delete") ENDIF ELSE * aktif prosedur TampilkanRecord() TampilkanRecord("SAVE") ENDIF ELSE * aktifkan prosedur TampilkanRecord() TampilkanRecord("SAVE")

Page 19: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

95

ENDIF ENDIF ENDPROC ENDDEFINE *--- definisi command button mySort ---* DEFINE CLASS mySORT AS COMMANDBUTTON Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdDelete.Left + ; _Screen.cmdDelete.Width && posisi kiri Width = _Screen.cmdFirst.Width + 20 && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "SORT" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf ToolTipText = "Urut Data" && tips kecil Visible = .T. && tampil di layar monitor PROCEDURE Click && aktif, jika button SORT diklik LOCAL nRecPos && variabel lokal SELECT TabelKu && aktifkan tabel TabelKu.dbf nRecPos = RECNO() && variabel posisi record sekarang IF RECCOUNT() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") ELSE && jika file isi, maka: SortData() && aktifkan prosedur SortData() GO nRecPos && menuju posisi record sekarang * aktifkan prosedur TampilkanRecord() TampilkanRecord("SORT") ENDIF ENDPROC ENDDEFINE *--- definisi command button myAbout ---* DEFINE CLASS myABOUT AS COMMANDBUTTON Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdSort.Left + ; _Screen.cmdSort.Width && posisi kiri Width = _Screen.cmdFirst.Width + 20 && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "ABOUT" && isi button FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor = RGB(0,0,0) && warna huruf ToolTipText = "Tentang Program" && tips kecil Visible = .T. && tampil di layar monitor PROCEDURE Click && aktif, jika button ABOUT diklik * tampilkan pesan MESSAGEBOX("Program ini disumbangkan kepada"+; CHR(13)+"komunitas programer di Indonesia."+; CHR(13)+"Semoga bermanfaat.....",0,"About") ENDPROC ENDDEFINE *--- definisi command button myClose ---* DEFINE CLASS myCLOSE AS COMMANDBUTTON Top = _Screen.cmdFirst.Top && posisi atas Left = _Screen.cmdAbout.Left + ; _Screen.cmdAbout.Width && posisi kiri Width = _Screen.cmdFirst.Width + 20 && lebar button Height = _Screen.cmdFirst.Height && tinggi button Caption = "CLOSE" && isi button Cancel = .T. && aktif jika tombol ESC ditekan

Page 20: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

96

FontName = "Arial" && jenis huruf FontSize = 9 && ukuran huruf ForeColor =RGB(0,0,0) && warna huruf ToolTipText="Selesai, kembali ke Windows" && tips kecil Visible =.T. && tampil di layar monitor PROCEDURE Click && aktif, jika button CLOSE diklik * tampilkan pesan, pilih YES atau NO IF MESSAGEBOX("Anda ingin selesai?",4+32,; "Konfirmasi") = 6 && pilihan YES Stop() && aktifkan prosedur Stop() ENDIF ENDPROC ENDDEFINE ****************************** * definisi prosedur-prosedur * ****************************** *--- prosedur SetButton ---* PROCEDURE SetButton PARAMETERS xPar && menerima variabel kiriman * mengatur button dalam form _SCREEN WITH _Screen .cmdFirst.Enabled = xPar && button ON/OFF .cmdPrev.Enabled = xPar && button ON/OFF .cmdNext.Enabled = xPar && button ON/OFF .cmdLast.Enabled = xPar && button ON/OFF .cmdAdd.Enabled = xPar && button ON/OFF .cmdEdit.Enabled = xPar && button ON/OFF .cmdDelete.Enabled = xPar && button ON/OFF .cmdSort.Enabled = xPar && button ON/OFF .cmdAbout.Enabled = xPar && button ON/OFF .cmdClose.Enabled = xPar && button ON/OFF IF xPar = .T. .cmdAdd.Caption = "ADD" && isi button .cmdEdit.Caption = "EDIT" && isi button .cmdDelete.Caption = "DELETE" && isi button .cmdAdd.ToolTipText = "Tambah Data" && tips .cmdEdit.ToolTipText = "Ubah Data" && tips .cmdDelete.ToolTipText = "Hapus Data" && tips ENDIF ENDWITH ENDPROC *--- prosedur SetField ---* PROCEDURE SetField PARAMETERS xPar && menerima variabel kiriman * mengatur field dalam form _SCREEN WITH _Screen .txtKode.Enabled = xPar && textbox ON/OFF .txtNama.Enabled = xPar && textbox ON/OFF .optJenKel.Enabled = xPar && textbox ON/OFF .txtAlamat.Enabled = xPar && textbox ON/OFF .txtKota.Enabled = xPar && textbox ON/OFF .txtKodePos.Enabled = xPar && textbox ON/OFF IF xPar && jika bernilai TRUE, maka: * warna dasar putih .optJenKel.BackColor = RGB(255,255,255) .optJenKel.Option1.BackColor = RGB(255,255,255) .optJenKel.Option2.BackColor = RGB(255,255,255) ELSE && jika bernilai FALSE, maka: * warna dasar abu-abu .optJenKel.BackColor = RGB(224,224,224) .optJenKel.Option1.BackColor = RGB(224,224,224)

Page 21: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

97

.optJenKel.Option2.BackColor = RGB(224,224,224) ENDIF .myGrid.Enabled = NOT xPar && grid ON/OFF ENDWITH ENDPROC *--- prosedur TampilkanData ---* PROCEDURE TampilkanData PARAMETERS xPar && menerima variabel kiriman IF xPar && jika bernilai TRUE, maka: * tampilkan data berikut WITH _Screen .txtNoRec.Value = RECNO() && NoRec .txtTotRec.Value = RECCOUNT() && TotRec .txtKode.Value = TabelKu.Kode && Kode .txtNama.Value = TabelKu.Nama && Nama IF TabelKu.JenKel = "Laki-laki" .optJenKel.Value = 1 && JenKel ELSE .optJenKel.Value = 2 && JenKel ENDIF .txtAlamat.Value = TabelKu.Alamat && Alamat .txtKota.Value = TabelKu.Kota && Kota .txtKodePos.Value = TabelKu.KodePos && KodePos .myGrid.Refresh ENDWITH ELSE && jika bernilai FALSE, maka * tampilkan data berikut WITH _Screen .txtNoRec.Value = RECCOUNT()+1 && NoRec .txtTotRec.Value = RECCOUNT() && TotRec .txtKode.Value = "" && isi textbox Kode .txtNama.Value = "" && isi textbox Nama .optJenKel.Value = 1 && isi textbox JenKel .txtAlamat.Value = "" && isi textbox Alamat .txtKota.Value = "" && isi textbox Kota .txtKodePos.Value = "" && isi textbox KodePos ENDWITH ENDIF ENDPROC *--- prosedur TampilkanRecord ---* PROCEDURE TampilkanRecord PARAMETERS cPar && menerima variabel kiriman DO CASE CASE cPar = "FIRST" GO TOP && menuju record awal CASE cPar = "PREV" SKIP -1 && menuju record sebelumnya CASE cPar = "NEXT" SKIP && menuju record berikutnya CASE cPar = "LAST" GO BOTTOM && menuju record akhir CASE cPar = "ADD" SetButton(.F.) && aktifkan prosedur SetButton() SetField(.T.) && aktifkan prosedur SetField() WITH _Screen .cmdAdd.Enabled = .T. && aktifkan button cmdADD .cmdEdit.Enabled = .T. && aktifkan button cmdEDIT .cmdAdd.Caption = "SAVE" && isi button cmdADD .cmdEdit.Caption = "CANCEL" && isi button cmdEDIT .cmdAdd.ToolTipText = "Simpan Data" && tip kecil .cmdEdit.ToolTipText = "Batal" && tip kecil

Page 22: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

98

.txtKode.SetFocus && kursor di field txtKode ENDWITH CASE cPar = "EDIT" SetButton(.F.) && aktifkan prosedur SetButton() SetField(.T.) && aktifkan prosedur SetField() WITH _Screen .txtKode.Enabled = .F. && textbox Kode nonaktif .cmdEdit.Enabled = .T. && button cmdEDIT aktif .cmdDelete.Enabled = .T. && button cmdDELETEaktif .cmdEdit.Caption = "SAVE" && button cmdEDIT .cmdDelete.Caption = "CANCEL" && button cmdDELETE .cmdEdit.ToolTipText ="Simpan Data" && tip kecil .cmdDelete.ToolTipText="Batal" && tip kecil .txtNama.SetFocus && kursor di field txtNama ENDWITH CASE cPar = "SAVE" SetButton(.T.) && aktifkan prosedur SetButton() SetField(.F.) && aktifkan prosedur SetField() OTHERWISE SetButton(.T.) && aktifkan prosedur SetButton() SetField(.F.) && aktifkan prosedur SetField() ENDCASE IF cPar = "ADD" TampilkanData(.F.) && aktif prosedur TampilkanData() ELSE TampilkanData(.T.) && aktif prosedur TampilkanData() ENDIF ENDPROC *--- prosedur TampilkanSorry ---* PROCEDURE TampilkanSorry PARAMETERS cPar && menerima variabel kiriman MESSAGEBOX(cPar,0,"SORRY") && tampilkan pesan SORRY ENDPROC *--- prosedur GridRefresh ---* PROCEDURE GridRefresh * me-refresh grid myGrid WITH _Screen.myGrid .HighlightStyle = 2 && warna dasar dipilih .HighlightForeColor = RGB(0,0,255) && huruf .HighlightBackColor = RGB(224,224,224) && dasar .SelectedItemForeColor = RGB(0,0,0) && huruf .SelectedItemBackColor = RGB(128,255,128) && dasar .RecordSource = "TabelKu" && tabel TabelKu .RecordSourceType = 1 && tipe alias .AllowAutoColumnFit = 2 && kolom tetap .AllowHeaderSizing = .F. && header tidak bisa diubah .DeleteMark = .F. && tidak bisa dihapus .ReadOnly = .T. && tidak bisa diubah .Visible = .T. && tampilkan di layar monitor * lebar masing-masing kolom .Column1.Width = 50 && lebar kolom1 .Column2.Width = 200 && lebar kolom2 .Column3.Width = 100 && lebar kolom3 .Column4.Width = 200 && lebar kolom4 .Column5.Width = 200 && lebar kolom5 .Column6.Width = 60 && lebar kolom6 * judul masing-masing kolom .Column1.Header1.Caption = "KODE" && judul kolom1 .Column2.Header1.Caption = "N A M A" && judul kolom2 .Column3.Header1.Caption = "JEN.KEL." && judul kolom3 .Column4.Header1.Caption = "ALAMAT" && judul kolom4

Page 23: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

99

.Column5.Header1.Caption = "KOTA" && judul kolom5 .Column6.Header1.Caption = "KODE POS" && judul kolom6 ENDWITH * me-refresh optiongroup optJenKel WITH _Screen.optJenKel .ForeColor = RGB(0,0,255) && warna huruf .BackColor = RGB(224,224,224) && warna dasar * mengatur optiongroup.Option1 .Option1.Top = 2 && posisi atas .Option1.Left = 10 && posisi kiri .Option1.Width = 80 && lebar option1 .Option1.Height = 22 && tinggi option1 .Option1.ForeColor = RGB(0,0,0) && warna non-aktif .Option1.BackColor = RGB(224,224,224) && non-aktif .Option1.Caption = "Laki-laki" && isi option1 * mengatur optiongroup.Option2 .Option2.Top = 2 && posisi atas .Option2.Left = 100 && posisi kiri .Option2.Width = 80 && lebar option1 .Option2.Height = 22 && tinggi option1 .Option2.ForeColor = RGB(0,0,0) && warna non-aktif .Option2.BackColor = RGB(224,224,224) && non-aktif .Option2.Caption = "Perempuan" && isi option1 ENDWITH ENDPROC *--- prosedur Start ---* PROCEDURE Start * isi label Tanggal _Screen.Tanggal.Caption = TampilkanTanggal() CLOSE TABLES ALL && tutup semua tabel * periksa, apakah file TabelKu.dbf sudah ada * jika file TabelKu.dbf tidak ada, maka: IF NOT FILE("TabelKu.dbf") * buat file baru TabelKu.dbf CREATE TABLE TabelKu.dbf ( ; Kode C(5), ; Nama C(50), ; JenKel C(9), ; Alamat C(50), ; Kota C(50), ; KodePos C(5)) ENDIF CLOSE TABLES ALL && tutup semua tabel * aktifkan tabel TabelKu USE TabelKu ALIAS TabelKu EXCLUSIVE IN 0 GridRefresh() && aktifkan prosedur GridRefresh() IF RECCOUNT() = 0 && jika file kosong, maka: * tampilkan pesan TampilkanSorry("SORRY.....file kosong!") ENDIF ENDPROC *--- prosedur Stop ---* PROCEDURE Stop SELECT TabelKu && aktifkan tabel TabelKu.dbf * jika jumlah record melebihi maksimum, maka: IF RECCOUNT() > nMaxRec GO (nMaxRec+1) && menuju mrecord maksimum + 1 * hapus beberapa record berikutnya DELETE NEXT RECCOUNT() * pastikan record benar-benar dihapus dari tabel PACK

Page 24: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

100

ENDIF QUIT && selesai, kembali ke Windows ENDPROC *--- prosedur SortData ---* PROCEDURE SortData * membuat form myFormSort oFormSort = CREATEOBJECT("myFormSort") oFormSort.Show && tampilkan READ EVENTS && aktifkan semua event RETURN && selesai ENDPROC **************************** * definisi form myFormSort * **************************** DEFINE CLASS myFormSort As Form Top = 10 && posisi atas Left = 10 && posisi kiri Width = 300 && lebar form Height = 160 && tinggi form Caption = "Urut Data" && judul form BorderStyle = 2 && fix dialog BackColor = _Screen.BackColor && warna dasar AutoCenter = .T. && posisi di tengah layar monitor ControlBox = .F. && control box di-non-aktifkan Movable = .T. && bisa dipindahkan MinButton = .F. && button minimum di-non-aktifkan MaxButton = .F. && button maksimum di-non-aktifkan Closable = .F. && button close di-non-aktifkan ShowTips = .T. && tip tool text di-aktifkan WindowType = 1 && window modal, lainnya non-aktif **************************************************** * berikut ini cara mengisi form myFormSort, yaitu: * * langsung menambahkan objek bersama atributnya * * ke dalam form * **************************************************** *--- tambahkan label lblMyJudul ---* ADD OBJECT lblMyJudul As Label WITH ; Name = "lblJudul", ; Caption = "Urut berdasarkan:", ; BackColor = _Screen.BackColor, ; FontBold = .T., ; Top = 10, ; Left = 10, ; Width = 120, ; Height = 22, ; Visible = .T. *--- tambahkan optiongroup optMyOption ---* ADD OBJECT optMyOption AS OptionGroup WITH ; Name = "optOption", ; FontName = "Arial", ; FontSize = 9, ; BackColor = _Screen.BackColor, ; ButtonCount = 4, ; Left = 10, ; Top = 35, ; Width = 130, ; Height = 110, ; Enabled = .T., ; Visible = .T. *--- tambahkan optiongroup optMySort ---* ADD OBJECT optMySort AS OptionGroup WITH ;

Page 25: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

101

Name = "optSort", ; FontName = "Arial", ; FontSize = 9, ; BackColor = _Screen.BackColor, ; ButtonCount = 2, ; Left = 150, ; Top = 35, ; Width = 120, ; Height = 60, ; Enabled = .T., ; Visible = .T. *--- tambahkan button mySort ---* ADD OBJECT mySort As Commandbutton WITH ; Name = "cmdSortOK", ; Caption = "OK", ; Top = 120, ; Left = 150, ; Width = 60, ; Height = 25, ; ToolTipText = "Proses dilanjutkan", ; Visible = .T. *--- tambahkan button myClose ---* ADD OBJECT myClose As Commandbutton WITH ; Name = "cmdSortClose", ; Caption = "Close", ; Cancel = .T., ; Top = 120, ; Left = 210, ; Width = 60, ; Height = 25, ; ToolTipText = "Proses dibatalkan", ; Visible = .T. *--- prosedur Init ---* PROCEDURE Init * mengatur optiongroup optOption WITH Thisform.optOption .Option1.Name = "optKODE" && nama option1 .Option2.Name = "optNAMA" && nama option1 .Option3.Name = "optJKEL" && nama option2 .Option4.Name = "optKOTA" && nama option3 * mengatur optKODE .optKODE.Caption = "KODE" && isi optKODE .optKODE.ForeColor = RGB(0,0,255) && warna biru .optKODE.FontBold = .T. && huruf tebal .optKODE.BackColor = _Screen.BackColor && dasar .optKODE.Top = 5 && posisi atas .optKODE.Left = 5 && posisi kiri .optKODE.Width = 100 && lebar optKODE .optKODE.Height = 20 && tinggi optKODE .optKODE.Visible = .T. && tampilkan di monitor * mengatur optNAMA .optNAMA.Caption = "NAMA" && isi optNAMA .optNAMA.ForeColor = RGB(0,0,255) && warna biru .optNAMA.FontBold = .T. && huruf tebal .optNAMA.BackColor = _Screen.BackColor && dasar .optNAMA.Top = 30 && posisi atas .optNAMA.Left = 5 && posisi kiri .optNAMA.Width = 100 && lebar optNAMA .optNAMA.Height = 20 && tinggi optNAMA .optNAMA.Visible = .T. && tampilkan di monitor * mengatur optJKEL

Page 26: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

102

.optJKEL.Caption = "JENIS KELAMIN" && optJKEL .optJKEL.ForeColor = RGB(0,0,255) && warna biru .optJKEL.FontBold = .T. && huruf tebal .optJKEL.BackColor = _Screen.BackColor && dasar .optJKEL.Top = 55 && posisi atas .optJKEL.Left = 5 && posisi kiri .optJKEL.Width = 110 && lebar optJKEL .optJKEL.Height = 20 && tinggi optJKEL .optJKEL.Visible = .T. && tampilkan di monitor * mengatur optKOTA .optKOTA.Caption = "KOTA" && isi optKOTA .optKOTA.ForeColor = RGB(0,0,255) && warna biru .optKOTA.FontBold = .T. && huruf tebal .optKOTA.BackColor = _Screen.BackColor && dasar .optKOTA.Top = 80 && posisi atas .optKOTA.Left = 5 && posisi kiri .optKOTA.Width = 100 && lebar optKOTA .optKOTA.Height = 20 && tinggi optKOTA .optKOTA.Visible = .T. && tampilkan di monitor ENDWITH * mengatur optiongroup optSort WITH Thisform.optSort .Option1.Name = "optASC" && nama option1 .Option2.Name = "optDESC" && nama option2 * mengatur optASC .optASC.Caption = "Ascending" && isi optASC .optASC.ForeColor = RGB(0,0,255) && warna biru .optASC.FontBold = .T. && huruf tebal .optASC.BackColor = _Screen.BackColor && dasar .optASC.Top = 5 && posisi atas .optASC.Left = 5 && posisi kiri .optASC.Width = 100 && lebar optASC .optASC.Height = 20 && tinggi optASC .optASC.Visible = .T. && tampilkan di monitor * mengatur optDESC .optDESC.Caption = "Descending" && isi optDESC .optDESC.ForeColor = RGB(0,0,255) && warna bitu .optDESC.FontBold = .T. && huruf tebal .optDESC.BackColor = _Screen.BackColor && dasar .optDESC.Top = 30 && posisi atas .optDESC.Left = 5 && posisi kiri .optDESC.Width = 100 && lebar optDESC .optDESC.Height = 20 && tinggi optDESC .optDESC.Visible = .T. && tampilkan di monitor ENDWITH ENDPROC *--- prosedur cmdSortOK.Click ---* PROCEDURE cmdSortOK.Click LOCAL I, N, xUrut && variabel lokal ********************************************* * pengurutan BUBBLE SORT (external sorting) * * untuk jumlah data 1.000 - waktu 00:01:30 * ********************************************* SELECT TabelKu && aktifkan tabel TabelKu N = RECCOUNT() && variabel jumlah record xUrut = .F. && variabel tanda (flag/switch) DO WHILE xUrut = .F. && selama False (belum urut) xUrut = .T. && tanda True (sudah urut) * pembacaan data sequential (awal s/d akhir) FOR I = 1 TO (N-1) GO I && menuju record ke I, ambil data

Page 27: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

103

xKODE = TabelKu.Kode && ambil KODE xNAMA = TabelKu.Nama && ambil NAMA xJKEL = TabelKu.JenKel && ambil JENKEL xALMT = TabelKu.Alamat && ambil ALAMAT xKOTA = TabelKu.Kota && ambil KOTA xKPOS = TabelKu.KodePos && ambil KODEPOS GO (I+1) && menuju record ke (I+1), ambil data yKODE = TabelKu.Kode && ambil KODE yNAMA = TabelKu.Nama && ambil NAMA yJKEL = TabelKu.JenKel && ambil JENKEL yALMT = TabelKu.Alamat && ambil ALAMAT yKOTA = TabelKu.Kota && ambil KOTA yKPOS = TabelKu.KodePos && ambil KODEPOS * periksa kondisi pengurutan dalam form ini WITH ThisForm * lakukan pembandingan DO CASE * urut KODE - ASCENDING CASE .optOption.Value=1 AND .optSort.Value=1 * jika memenuhi syarat, pemindahan data IF xKODE > yKODE xUrut = .F. && False (belum urut) ThisForm.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data ENDIF * urut KODE - DESCENDING CASE .optOption.Value=1 AND .optSort.Value=2 * jika memenuhi syarat, pemindahan data IF xKODE < yKODE xUrut = .F. && False (belum urut) ThisForm.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data ENDIF * urut NAMA - ASCENDING CASE .optOption.Value=2 AND .optSort.Value=1 * jika memenuhi syarat, pemindahan data IF xNAMA > yNAMA xUrut = .F. && False (belum urut) ThisForm.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data ENDIF * urut NAMA - DESCENDING CASE .optOption.Value=2 AND .optSort.Value=2 * jika memenuhi syarat, pemindahan data IF xNAMA < yNAMA xUrut = .F. && False (belum urut) ThisForm.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data ENDIF * urut JENKEL - ASCENDING CASE .optOption.Value=3 AND .optSort.Value=1 * jika memenuhi syarat, pemindahan data IF xJKEL > yJKEL xUrut = .F. && False (belum urut) ThisForm.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data

Page 28: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

104

ENDIF * urut JENKEL - DESCENDING CASE .optOption.Value=3 AND .optSort.Value=2 * jika memenuhi syarat, pemindahan data IF xJKEL < yJKEL xUrut = .F. && False (belum urut) ThisForm.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data ENDIF * urut KOTA - ASCENDING CASE .optOption.Value=4 AND .optSort.Value=1 * jika memenuhi syarat, pemindahan data IF xKOTA > yKOTA xUrut = .F. && False (belum urut) ThisForm.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data ENDIF * urut KOTA - DESCENDING CASE .optOption.Value=4 AND .optSort.Value=2 * jika memenuhi syarat, pemindahan data IF xKOTA < yKOTA xUrut = .F. && False (belum urut) ThisForm.SimpanData(I,xKODE,xNAMA,xJKEL,; xALMT,xKOTA,xKPOS,yKODE,yNAMA,yJKEL,; yALMT,yKOTA,yKPOS) && simpan data ENDIF ENDCASE ENDWITH NEXT ENDDO ThisForm.Release && form dihapus ENDPROC *--- prosedur cmdSortClose.Click ---* PROCEDURE cmdSortClose.Click ThisForm.Release && form dihapus ENDPROC *--- prosedur SimpanData ---* PROCEDURE SimpanData * menerima 13 variabel kiriman PARAMETERS nRecPos, ; xKODE,xNAMA,xJKEL,xALMT,xKOTA,xKPOS, ; yKODE,yNAMA,yJKEL,yALMT,yKOTA,yKPOS * menuju record xRecPos GO nRecPos * menyimpan data di record xRecPos REPLACE TabelKu.Kode WITH yKODE && simpan Kode REPLACE TabelKu.Nama WITH yNAMA && simpan Nama REPLACE TabelKu.JenKel WITH yJKEL && simpan JenKel REPLACE TabelKu.Alamat WITH yALMT && simpan Alamat REPLACE TabelKu.Kota WITH yKOTA && simpan Kota REPLACE TabelKu.KodePos WITH yKPOS && simpan Kode Pos * menuju record ( xRecPos + 1 ) GO (nRecPos+1) * menyimpan data di record xRecPos+1 REPLACE TabelKu.Kode WITH xKODE && simpan Kode REPLACE TabelKu.Nama WITH xNAMA && simpan Nama REPLACE TabelKu.JenKel WITH xJKEL && simpan JenKel REPLACE TabelKu.Alamat WITH xALMT && simpan Alamat REPLACE TabelKu.Kota WITH xKOTA && simpan Kota

Page 29: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

105

REPLACE TabelKu.KodePos WITH xKPOS && simpan Kode Pos ENDPROC ENDDEFINE *--- prosedur TampilkanTanggal ---* FUNCTION TampilkanTanggal LOCAL cRet,NamaHari(7),NamaPasar(5),NamaBulan(12) * Nama-nama hari NamaHari(1) = "Minggu" NamaHari(2) = "Senin" NamaHari(3) = "Selasa" NamaHari(4) = "Rabu" NamaHari(5) = "Kamis" NamaHari(6) = "Jum'at" NamaHari(7) = "Sabtu" * Nama-nama pasaran NamaPasar(1) = "Pahing" NamaPasar(2) = "Pon" NamaPasar(3) = "Wage" NamaPasar(4) = "Kliwon" NamaPasar(5) = "Legi" * Nama-nama bulan NamaBulan(1) = "Januari" NamaBulan(2) = "Februari" NamaBulan(3) = "Maret" NamaBulan(4) = "April" NamaBulan(5) = "Mei" NamaBulan(6) = "Juni" NamaBulan(7) = "Juli" NamaBulan(8) = "Agustus" NamaBulan(9) = "September" NamaBulan(10)= "Oktober" NamaBulan(11)= "Nopember" NamaBulan(12)= "Desember" * nama hari dan pasar, tanggal, bulan dan tahun cRet = NamaHari(DOW(DATE()))+" - "+ ; NamaPasar((MOD((DATE()-CTOD("01/01/1900")),5)+1))+; ", "+ALLTRIM(STR(DAY(DATE())))+" "+; NamaBulan(MONTH(DATE()))+" "+STR(YEAR(DATE()),4) * mengembalikan nama hari dan pasar, tanggal, * bulan dan tahun RETURN (cRet) ENDFUNC * End of procedure

Ketik program di atas, simpan dengan nama TabelKu.prg atau copy file TabelKu.prg dari CD pendamping buku ini, kemudian jalankan di dalam lingkungan Visual FoxPro. Hasilnya pasti memuaskan!

Page 30: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

106

TABEL BAPAKANAK Program aplikasi Bapak-Anak ini melibatkan tiga tabel (DBF) yang saling berhubungan. Tabel Bapak.dbf berhubungan langsung dengan tabel Anak.dbf, sedangkan tabel Anak.dbf berhubungan dengan tabel Cucu.dbf. Ketiga tabel dihubungkan menggunakan field kunci. Tabel Bapak.dbf menggunakan kunci KODE untuk berhubungan dengan tabel Anak.dbf, sedangkan tabel Anak.dbf menggunakan kunci KDANAK untuk berhubungan dengan tabel Cucu.dbf.

Dengan program BapakAnak ini, Anda dapat mengisi data, meng-ubah data, menghapus data, serta menelusuri tabel dari satu record ke record lainnya. Tabel Bapak, tabel Anak, maupun tabel Cucu ditampilkan dalam satu layar sebagai sarana interaktif antara pema-kai dengan database (tabel).

Pembahasan dalam program aplikasi Bapak-Anak ini difokuskan pada pembuatan file kode (CODE), yaitu file yang berekstensi PRG. Program BapakAnak berhubungan dengan 3 tabel, yaitu Bapak.DBF, Anak.DBF, dan Cucu.DBF.

Page 31: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

107

Kita masih memanfaatkan form utama Visual FoxPro dan beberapa objek Label, TextBox, Grid, dan CommandButton untuk menangani ketiga tabel tersebut.

Struktur tabel Bapak.DBF adalah sebagai berikut.

No Field Type Width Keterangan

1 KODE C 3 Kode Bapak kunci penghubung tabel Anak.DBF

2 NAMA C 30 Nama Bapak

Struktur tabel Anak.DBF adalah sebagai berikut.

No Field Type Width Keterangan

1 KODE C 3 Kode kunci penghubung tabel Bapak.DBF

2 KDANAK C 3 Kode Anak kunci penghubung tabel MataKuliah.DBF

3 NMANAK C 30 Nama Anak

Struktur tabel Cucu.DBF adalah sebagai berikut.

No Field Type Width Keterangan

1 KDCUCU C 3 Kode Cucu kunci penghubung tabel Anak.DBF

2 NMCUCU C 30 Nama Cucu

Program aplikasi BapakAnak disusun berdasarkan konsep hubungan antartabel seperti tersebut di atas. Tabel Bapak, tabel Anak, dan tabel Cucu ditampilkan dalam satu layar sehingga memudahkan pemakai untuk melakukan penelusuran dari satu record ke record lainnya. Perubahan dalam tabel Bapak akan langsung kelihatan dalam tabel

Page 32: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

108

Anak, demikian juga perubahan dalam tabel Anak akan langsung kelihatan dalam tabel Cucu. Disamping itu, manipulasi data dapat dilakukan dengan mudah, baik menambah data, mengubah data, maupun menghapus data.

Berikut ini contoh hubungan antara tabel Bapak, Anak, dan Cucu. Di mana satu data dalam tabel Bapak berhubungan dengan 2 data dalam tabel Anak serta tabel Cucu.

Contoh pemakaian:

Tabel Bapak (001-Kusmijanto) berhubungan dengan 2 Anak (100 dan 200), sedangkan tabel Anak berhubungan dengan 2 Cucu (100-Bhs. Indonesia dan 200-Bhs. Inggris).

Tabel Bapak:

KODE NAMA

001 Kusmijanto

Tabel Anak:

KODE KDANAK NMANAK

001 100 Bhs. Indonesia

001 200 Bhs. Inggris

002 100 Bhs. Indonesia

002 400 Sejarah

Tabel Cucu:

KDCUCU NMCUCU

100 Bhs. Indonesia

200 Bhs. Inggris

300 Matematika

400 Sejarah

Page 33: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

109

Semoga uraian yang ringkas di atas bisa menjelaskan konsep hubungan ketiga tabel yang tampak dalam contoh pemakaian. Penjelasan yang lebih rinci sudah banyak ditulis dalam beberapa buku mengenai konsep database relasional serta perintah SQL-nya.

7.1 Desain Program Bentuk tampilan dari program Bapak-Anak seperti gambar di bawah ini, yaitu jendela sebagai sarana interaktif antara pemakai dengan database (tabel). Di bagian atas terdapat informasi tabel Bapak, sedangkan di bagian bawah terdapat informasi tabel Anak. Jika Anda mengklik button […], maka akan ditampilkan form yang menangani tabel Cucu.

Gambar 7.1a Tampilan program aplikasi BapakAnak

Page 34: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

110

Fasilitas yang tersedia, antara lain navigasi record, tambah data, ubah data, hapus data, tentang program, dan tutup form.

Jika button […] diklik, maka akan tampil form pengelolaan cucu sebagai berikut.

Form Pengelolaan tabel Cucu.

Gambar 7.1b Tampilan Pengelolaan Tabel Cucu

Fasilitas yang tersedia, antara lain navigasi record, tambah data, ubah data, hapus data, tentang program dan tutup form, kembali ke tampilan Bapak-Anak.

Page 35: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

111

7.2 Logika Program Dasar utama pembuatan program Bapak-Anak ini adalah jendela sebagai sarana interaktif antara pemakai dan database (tabel). Dalam pengelolaan 3 tabel dibutuhkan objek Label, Grid, dan CommandButton yang menampilkan semua record (data) dari ketiga tabel, yakni tabel Bapak, Anak, dan Cucu.

Program Bapak-Anak disusun hanya menggunakan kode program (CODE) saja, tanpa membuat form lainnya selain form utama Visual FoxPro, yaitu variabel _SCREEN. Algoritma program Bapak-Anak adalah sebagai berikut.

• Mengatur variabel _SCREEN untuk diisi dengan beberapa objek Label, objek Grid, dan objek CommandButton.

• Menghubungkan form dengan ketiga tabel (Bapak.dbf, Anak.dbf, dan Cucu.dbf)

• Menampilkan record (data) ke dalam form. Selanjutnya terserah pemakai.

• Pemakai dapat menelusuri tabel, menambah data, mengubah data, atau menghapus data.

Pengembangan selanjutnya dari program ini, bisa digunakan untuk berbagai keperluan bidang bisnis lainnya, misalnya akuntansi, point of sales, pendidikan, perpustakaan, dan lain-lain.

Program aplikasi BapakAnak menampilkan isi tabel Bapak.dbf, Anak.dbf, dan Cucu.dbf. Data yang ditampilkan, antara lain untuk tabel Bapak.dbf adalah Kode dan Nama; sedangkan untuk tabel Anak.dbf adalah Kode, Kode Anak, dan Nama Anak. Di baris atas ditampilkan nama hari dan pasaran posisi tanggal saat ini dan ditampilkan juga jam digital. Kemudian ditampilkan masing-masing data (record) serta semua data dalam grid. Di baris bawah ditam-pilkan navigasi (pergerakan) record, button untuk tambah data (ADD), ubah data (EDIT), hapus data (DELETE), dan pengurutan data (SORT), serta button About yang akan menampilkan kete-rangan kecil tentang program ini, dan button Close yang akan menampilkan pilihan untuk mengakhiri program. Jika dipilih YES, maka program akan berhenti dan kembali ke Windows.

Page 36: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

112

Secara sederhana, program aplikasi tabel BapakAnak dapat digam-barkan sebagai berikut.

Gambar 7.2 Flowchart program aplikasi tabel BapakAnak

Persiapan

Menampilkan Data

Start

Stop

Mengatur form _SCREEN

Menampilkan semua data dalam objek Grid dan menampilkan satu data dalam objek TextBox

Navigasi Record ADD EDIT DELETE SORT ABOUT CLOSE

Menampilkan Data Cucu

Pengelolaan tabel Cucu.dbf

Navigasi Record ADD EDIT DELETE ABOUT CLOSE

Page 37: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

113

7.3 Kode Program Berikut ini listing kode program tabel BapakAnak.

*********************************************************** * Nama Program : BapakAnak.prg * * Keterangan : program aplikasi (CODE) untuk menangani * * 3 tabel Bapak, tabel Anak dan tabel Cucu * * yang saling berhubungan (relationship) * * - single user version (exclusive) - * *********************************************************** * Set Environment SET TALK OFF SET STATUS OFF SET SAFETY OFF SET STATUS BAR OFF SET SYSMENU OFF SET EXCLUSIVE ON SET ESCAPE ON * bersihkan memori CLEAR ALL CLOSE ALL CLOSE TABLES ALL * variabel public PUBLIC oKusForm As Form PUBLIC nMaxRec nMaxRec = 1000 && Jumlah record maksimum 1.000 * Mengatur form _SCREEN (milik Visual FoxPro) WITH _Screen .Top = 0 && posisi atas .Left = 0 && posisi kiri .Width = 390 && lebar form .Height = 600 && tinggi form .Caption = "Parent - Child Relationship" && judul form .AutoCenter = .T. && form ditengah layar monitor .ControlBox = .F. && button controbox dihilangkan .Closable = .F. && button close dihilangkan .MaxButton = .F. && button max dihilangkan .MinButton = .F. && button min dihilangkan .ShowTips = .T. && tampilkan tooltiptext .BorderStyle = 2 && fix dialog ****************** * Kelompok Bapak * ****************** * tambahkan objek label .AddObject("Judul","myJudul") .AddObject("JudulBapak","myJudulBapak") .AddObject("Waktu", "myWaktu") .AddObject("Tanggal","myTanggal") .AddObject("Jam","myJam") .AddObject("Versi","myVersion") .AddObject("RecBapak","myRecBapak") .AddObject("KodeBapak","myKodeBapak") .AddObject("NamaBapak","myNamaBapak") * tambahkan objek label .AddObject("Titik01","myTitik01") .AddObject("Titik02","myTitik02")

Page 38: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

114

.AddObject("Titik03","myTitik03") * tambahkan objek textbox .AddObject("txtKodeBapak","mytxtKodeBapak") .AddObject("txtNamaBapak","mytxtNamaBapak") .AddObject("txtNoRecBapak","mytxtNoRecBapak") .AddObject("txtTotRecBapak","mytxtTotRecBapak") * tambahkan objek grid .AddObject("GrdGridBapak","myGrdGridBapak") * tambahkan objek button .AddObject("cmdTop","myCmdTop") .AddObject("cmdPrev","myCmdPrev") .AddObject("cmdNext","myCmdNext") .AddObject("cmdBottom","myCmdBottom") .AddObject("cmdAdd","myCmdAdd") .AddObject("cmdEdit","myCmdEdit") .AddObject("cmdDel","myCmdDel") .AddObject("cmdAbout","myCmdAbout") .AddObject("cmdClose","myCmdClose") ***************** * Kelompok Anak * ***************** * tambahkan objek label .AddObject("JudulAnak","myJudulAnak") .AddObject("KodeAnak","myKodeAnak") .AddObject("NamaAnak","myNamaAnak") .AddObject("TabelCucu","myTabelCucu") .AddObject("NoRecAnak","myNoRecAnak") .AddObject("NomorAnak","myNomorAnak") * tambahkan objek label .AddObject("Titik04","myTitik04") .AddObject("Titik05","myTitik05") .AddObject("Titik06","myTitik06") .AddObject("Titik07","myTitik07") * tambahkan objek textbox .AddObject("txtKodeAnak","mytxtKodeAnak") .AddObject("txtNomorAnak","mytxtNomorAnak") .AddObject("txtNamaAnak","mytxtNamaAnak") .AddObject("txtNoRecAnak","mytxtNoRecAnak") .AddObject("txtTotRecAnak","mytxtTotRecAnak") * tambahkan objek grid .AddObject("GrdGridAnak","myGrdGridAnak") * tambahkan objek button .AddObject("cmdCucu","myCmdCucu") * tambahkan objek button .AddObject("cmdTopAnak","myCmdTopAnak") .AddObject("cmdPrevAnak","myCmdPrevAnak") .AddObject("cmdNextAnak","myCmdNextAnak") .AddObject("cmdBottomAnak","myCmdBottomAnak") .AddObject("cmdAddAnak","myCmdAddAnak") .AddObject("cmdEditAnak","myCmdEditAnak") .AddObject("cmdDelAnak","myCmdDelAnak") .AddObject("cmdAboutAnak","myCmdAboutAnak") .AddObject("cmdCloseAnak","myCmdCloseAnak") * tampilkan form .Show ENDWITH Start() && aktifkan prosedur Start() READ EVENTS && aktifkan semua event RETURN && selesai ***************************************** * definisi objek timer, label, textbox, *

Page 39: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

115

* optiongroup dan command button * ***************************************** *--- definisi timer myWaktu ---* DEFINE CLASS myWaktu AS Timer Top = 0 && posisi atas Left = 0 && posisi kiri Interval = 1000 && interval 1 detik PROCEDURE Timer && aktif setiap 1 detik * label Jam diisi jam 00:00:00 _Screen.Jam.Caption = TIME() ENDPROC ENDDEFINE ****************** * KELOMPOK BAPAK * ****************** *---------------------------- * Kelompok Label *---------------------------- *--- definisi label myJudul ---* DEFINE CLASS myJudul As Label Top = 10 && posisi atas Left = 20 && posisi kiri Width = 220 && lebar label Height = 25 && tinggi label FontBold = .T. && huruf tebal Caption = "PARENT - CHILD TABLE RELATIONSHIP" Visible = .T. && tampak di layar monitor ENDDEFINE *--- definisi label myVersion ---* DEFINE CLASS myVersion AS Label Top = 10 && posisi atas Left = 240 && posisi kiri Width = 120 && lebar label Height = 20 && tinggi label Caption = "Single User Version" && isi label Alignment = 1 && rata kanan Visible = .T. && label tampil ENDDEFINE *--- definisi label myJudulBapak ---* DEFINE CLASS myJudulBapak As Label Top = 35 && posisi atas Left = 20 && posisi kiri Width = 108 && lebar label Height = 25 && tinggi label FontBold = .T. && huruf tebal ForeColor = RGB(0,0,255) && warna huruf Caption = "PARENT TABLE" && isi Label Visible = .T. && tampak di layar monitor ENDDEFINE *--- definisi label myTanggal ---* DEFINE CLASS myTanggal AS Label Top = 35 && posisi atas Left = 110 && posisi kiri Width = 190 && lebar label Height = 20 && tinggi label Caption = "" && isi label Alignment = 1 && rata kanan Visible = .T. && label tampil ENDDEFINE *--- definisi label myJam ---* DEFINE CLASS myJam AS Label

Page 40: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

116

Top = 35 && posisi atas Left = 310 && posisi kiri Width = 50 && lebar textbox Height = 20 && tinggi label Caption = TIME() && label diisi jam 00:00:00 Alignment = 1 && rata kanan Visible = .T. && label tampil ENDDEFINE *--- definisi label myKodeBapak ---* DEFINE CLASS myKodeBapak As Label Top = 60 && posisi atas Left = 20 && posisi kiri Width = 40 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Caption = "Kode" && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *------------------------------- DEFINE CLASS myRecBapak As Label Top = 60 && posisi atas Left = 168 && posisi kiri Width = 50 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Caption = "Rec. No." && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *-------------------------------- DEFINE CLASS myNamaBapak As Label Top = 85 && posisi atas Left = 20 && posisi kiri Width = 40 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Caption = "Nama" && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *------------------------------ * Kelompok Titik Bapak *------------------------------ DEFINE CLASS myTitik01 As Label Top = 60 && posisi atas Left = 216 && posisi kiri Width = 12 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Alignment = 2 && di tengah Caption = ":" && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *------------------------------ DEFINE CLASS myTitik02 As Label Top = 60 && posisi atas Left = 60 && posisi kiri Width = 12 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Alignment = 2 && di tengah Caption = ":" && isi label Visible = .T. && tampak di layar monitor

Page 41: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

117

ENDDEFINE *------------------------------ DEFINE CLASS myTitik03 As Label Top = 85 && posisi atas Left = 60 && posisi kiri Width = 12 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Alignment = 2 && di tengah Caption = ":" && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *------------------------------------- * Kelompok TextBox Bapak *------------------------------------- DEFINE CLASS mytxtKodeBapak As TextBox Top = 60 && posisi atas Left = 70 && posisi kiri Width = 60 && lebar label Height = 22 && tinggi label Alignment = 0 && di kiri textbox Enabled = .F. && non-aktif Format = "999" && bentuk tampilan InputMask = "999" && bentuk masukan ForeColor = RGB(0,0,255) && warna huruf DisabledBackColor = RGB(128,255,255) && warna dasar DisabledForeColor = RGB(255,0,0) && warna depan Visible = .T. && tampak di layar monitor ENDDEFINE *-------------------------------------- DEFINE CLASS myTxtNoRecBapak As TextBox Top = 60 && posisi atas Left = 230 && posisi kiri Width = 60 && lebar label Height = 22 && tinggi label Alignment = 2 && di kiri textbox Enabled = .F. && non-aktif Format = "999999" && bentuk tampilan InputMask = "999999" && bentuk masukan ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledBackColor = RGB(128,255,255) && warna non-aktif DisabledForeColor = RGB(255,0,0) && warna non-aktif TabStop = .F. && tidak bisa di-tab Visible = .T. && tampak di layar monitor ENDDEFINE *--------------------------------------- DEFINE CLASS myTxtTotRecBapak As TextBox Top = 60 && posisi atas Left = 300 && posisi kiri Width = 60 && lebar label Height = 22 && tinggi label Alignment = 2 && di kiri textbox Enabled = .F. && non-aktif Format = "999999" && bentuk tampilan InputMask = "999999" && bentuk masukan ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledBackColor = RGB(128,255,255) && warna non-aktif DisabledForeColor = RGB(255,0,0) && warna non-aktif TabStop = .F. && tidak bisa di-tab

Page 42: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

118

Visible = .T. && tampak di layar monitor ENDDEFINE *------------------------------------- DEFINE CLASS myTxtNamaBapak As TextBox Top = 85 && posisi atas Left = 70 && posisi kiri Width = 290 && lebar text box Height = 22 && tinggi text box MaxLength = 30 && isian maksimum Enabled = .F. && non-aktif ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledBackColor = RGB(128,255,255) && warna non-aktif DisabledForeColor = RGB(255,0,0) && warna non-aktif Visible = .T. && tampak di layar monitor ENDDEFINE *---------------------------------- * Kelompok Grid Bapak *---------------------------------- DEFINE CLASS myGrdGridBapak As Grid Top = 115 && posisi atas Left = 20 && posisi kiri Width = 350 && lebar grid Height = 121 && tinggi grid ColumnCount = 2 && jumlah kolom DeleteMark = .F. && tidak bisa dihapus ReadOnly = .T. && tidak bisa diedit RecordSource = "Bapak" && sumber tabel Bapak RecordSourceType = 1 && alias SplitBar = .F. && tidak bisa displit Column1.Name = "Column1" && nama kolom 1 Column2.Name = "Column2" && nama kolom 2 Visible = .T. && tampak di layar monitor PROCEDURE AfterRowColChange && aktif jika ada perubahan * parameter ini harus ada, tidak digunakan LPARAMETERS nColIndex RefreshAnakTmp() && aktifkan RefreshAnakTmp() TampilkanAnak() && aktifkan TampilkanAnak() TampilkanBapak() && aktifkan TampilkanBapak() ENDPROC ENDDEFINE *------------------------------------- * Kelompok CommandButton Bapak *------------------------------------- DEFINE CLASS myCmdTop As CommandButton Top = 240 && posisi atas Left = 20 && posisi kiri Width = 25 && lebar button Height = 25 && tinggi button Caption = "|<" && isi button ToolTipText = "Record Awal" && tips kecil Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik * aktifkan prosedur NavigasiBapak() NavigasiBapak("FIRST") ENDPROC ENDDEFINE *-------------------------------------- DEFINE CLASS myCmdPrev As CommandButton Top = _Screen.cmdTop.Top && posisi atas Left = _Screen.cmdTop.Left + ;

Page 43: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

119

_Screen.cmdTop.Width && posisi kiri Height = _Screen.cmdTop.Height && tinggi button Width = _Screen.cmdTop.Width && lebar button Caption = "<" && isi button ToolTipText = "Record Sebelumnya" && tips kecil Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik * aktifkan prosedur NavigasiBapak() NavigasiBapak("PREV") ENDPROC ENDDEFINE *-------------------------------------- DEFINE CLASS myCmdNext As CommandButton Top = _Screen.cmdPrev.Top && posisi atas Left = _Screen.cmdPrev.Left + ; _Screen.cmdPrev.Width && posisi kiri Height = _Screen.cmdPrev.Height && tinggi button Width = _Screen.cmdPrev.Width && lebar button Caption = ">" && isi button ToolTipText = "Record Berikutnya" && tips kecil Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik * aktifkan prosedur NavigasiBapak() NavigasiBapak("NEXT") ENDPROC ENDDEFINE *---------------------------------------- DEFINE CLASS myCmdBottom As CommandButton Top = _Screen.cmdNext.Top && posisi atas Left = _Screen.cmdNext.Left + ; _Screen.cmdNext.Width && posisi kiri Height = _Screen.cmdNext.Height && tinggi button Width = _Screen.cmdNext.Width && lebar button Caption = ">|" && isi button ToolTipText = "Record Akhir" && tips kecil Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik * aktifkan prosedur NavigasiBapak() NavigasiBapak("LAST") ENDPROC ENDDEFINE *------------------------------------- DEFINE CLASS myCmdAdd As CommandButton Top = _Screen.cmdBottom.Top && posisi atas Left = _Screen.cmdBottom.Left + ; _Screen.cmdBottom.Width && posisi kiri Width = _Screen.cmdBottom.Width + 25 && lebar button Height = _Screen.cmdBottom.Height && tinggi button Caption = "Add" && isi button ToolTipText = "Tambah Data" && tips kecil Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik LOCAL nRecPos SELECT Bapak && aktifkan tabel Bapak * jika jumlah record sudah maksimum, maka: IF RECCOUNT() >= nMaxRec TampilkanRecordMax() && tampilkan pesan ELSE WITH _Screen && menatur _SCREEN DO CASE CASE .cmdAdd.Caption = "Add" && button ADD

Page 44: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

120

* aktifkan prosedur ButtonBapak() ButtonBapak(.F.) * aktifkan prosedur ButtonAnak() ButtonAnak(.F.) * mengatur grid .grdGridBapak.Enabled = .F. && non-aktif .grdGridAnak.Enabled = .F. && non-aktif * mengatur button .cmdAdd.Enabled = .T. && button non-aktif .cmdEdit.Enabled = .T. && button non-aktif * mengatur button .cmdAdd.Caption = "Save" && button Add .cmdEdit.Caption = "Cancel" && button Edit * mengatur field .txtKodeBapak.Value = "" && dikosongkan .txtNamaBapak.Value = "" && dikosongkan * mengatur field .txtKodeBapak.Enabled = .T. && non-aktif .txtNamaBapak.Enabled = .T. && non-aktif * kursor fokus di field txtKodeBapak .txtKodeBapak.SETFOCUS CASE .cmdAdd.Caption = "Save" && button SAVE * jika txtKodeBapak kosong IF EMPTY(.txtKodeBapak.Value) TampilkanKodeKosong() && tampil pesan * kursos fokus di field txtKodeBapak .txtKodeBapak.SetFocus ELSE && jika txtKodeBapak isi nRecPos = RECNO() && posisi record LOCATE FOR Kode = .txtKodeBapak.Value IF FOUND() TampilkanKodeSama() && pesan GO nRecPos && record nRecPos * kursos fokus di txtKodeBapak .txtKodeBapak.SetFocus ELSE APPEND BLANK && tambah satu record * simpan data REPLACE Bapak.Kode ; WITH .txtKodeBapak.Value REPLACE Bapak.Nama ; WITH .txtNamaBapak.Value FLUSH && pastikan data disimpan GO BOTTOM && menuju akhir record * aktifkan prosedur BapakRefresh() BapakRefresh() * aktifkan prosedur ButtonBapak() ButtonBapak(.T.) * aktifkan prosedur ButtonAnak() ButtonAnak(.T.) * mengatur button .cmdAdd.Caption = "Add" .cmdEdit.Caption = "Edit" * mengatur textbox .txtKodeBapak.Value = Bapak.Kode .txtNamaBapak.Value = Bapak.Nama * mengatur textbox .txtKodeBapak.Enabled = .F. .txtNamaBapak.Enabled = .F. * .grdGridAnak.Enabled = .T.

Page 45: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

121

.grdGridBapak.Enabled = .T. .grdGridBapak.Refresh && direfresh ENDIF ENDIF ENDCASE ENDWITH ENDIF ENDPROC ENDDEFINE *-------------------------------------- DEFINE CLASS myCmdEdit As CommandButton Top = _Screen.cmdAdd.Top && posisi atas Left = _Screen.cmdAdd.Left + ; _Screen.cmdAdd.Width && posisi kiri Height = _Screen.cmdAdd.Height && tinggi button Width = _Screen.cmdAdd.Width && lebar button Caption = "Edit" && isi button ToolTipText = "Ubah Data" && keterangan pendek Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik SELECT Bapak && aktifkan tabel Bapak IF RECCOUNT() = 0 && jika file kosong, maka: TampilkanFileKosong() && tampilkan pesan ELSE && jika file isi * mengatur _SCREEN WITH _Screen DO CASE CASE .cmdEdit.Caption = "Edit" && Edit * aktifkan prosedur ButtonBapak() ButtonBapak(.F.) * aktifkan prosedur ButtonAnak() ButtonAnak(.F.) * mengatur grid .grdGridBapak.Enabled = .F. && non-aktif .grdGridAnak.Enabled = .F. && non-aktif * mengatur button .cmdEdit.Enabled = .T. && non-aktif .cmdDel.Enabled = .T. && non-aktiif * mengatur button .cmdEdit.Caption = "Save" .cmdDel.Caption = "Cancel" * mengatur textbox .txtKodeBapak.Value = Bapak.Kode .txtNamaBapak.Value = Bapak.Nama * mengatur textbox .txtKodeBapak.Enabled = .T. && non-aktif .txtNamaBapak.Enabled = .T. && non-aktif * kursor fokus di field txtKodeBapak .txtKodeBapak.SETFOCUS CASE .cmdEdit.Caption = "Save" && button Save * simpan data REPLACE Bapak.Kode WITH .txtKodeBapak.Value REPLACE Bapak.Nama WITH .txtNamaBapak.Value FLUSH && pastikan data disimpan * aktifkan prosedur ButtonBapak() ButtonBapak(.T.) * aktifkan prosedur ButtonAnak() ButtonAnak(.T.) * mengatur button .cmdEdit.Caption = "Edit" .cmdDel.Caption = "Del"

Page 46: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

122

* mengatur textbox .txtKodeBapak.Value = Bapak.Kode .txtNamaBapak.Value = Bapak.Nama * mengatur textbot .txtKodeBapak.Enabled = .F. && non-aktif .txtNamaBapak.Enabled = .F. && non-aktif * mengatur grid .grdGridAnak.Enabled = .T. && aktif .grdGridBapak.Enabled = .T. && aktif .grdGridBapak.Refresh && direfresh OTHERWISE && lainnya * aktifkan prosedur ButtonBapak() ButtonBapak(.T.) * aktifkan prosedur ButtonAnak() ButtonAnak(.T.) * mengatur button .cmdAdd.Caption = "Add" .cmdEdit.Caption = "Edit" .cmdDel.Caption = "Del" * mengatur textbox .txtKodeBapak.Value = Bapak.Kode .txtNamaBapak.Value = Bapak.Nama * mengatur textbox .txtKodeBapak.Enabled = .F. && non-aktif .txtNamaBapak.Enabled = .F. && non-aktif * mengatur grid .grdGridAnak.Enabled = .T. && aktif .grdGridBapak.Enabled = .T. && aktif .grdGridBapak.Refresh && direfresh ENDCASE ENDWITH ENDIF ENDPROC ENDDEFINE *------------------------------------- DEFINE CLASS myCmdDel As CommandButton Top = _Screen.cmdEdit.Top && posisi atas Left = _Screen.cmdEdit.Left + ; _Screen.cmdEdit.Width && posisi kiri Height = _Screen.cmdEdit.Height && tinggi button Width = _Screen.cmdEdit.Width && lebar button Caption = "Del" && isi button ToolTipText = "Hapus Data" && keterangan pendek Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik SELECT Bapak && aktifkan tabel Bapak IF RECCOUNT() = 0 && jika file kosong TampilkanFileKosong() && tampilkan pesan ELSE && jika file isi * mengatur _SCREEN WITH _Screen DO CASE CASE .cmdDel.Caption = "Del" && button Del * tampilkan pilihan, YES atau NO IF MESSAGEBOX("Anda ingin menghapus record?",; 4+32+256,"Konfirmasi")=6 && YES SELECT Bapak && aktifkan tabel Bapak xRecPos = RECNO() && posisi record DELETE && hapus record PACK && pastikan record dihapus * jika file kosong

Page 47: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

123

IF RECCOUNT() = 0 TampilkanFileKosong() && pesan ELSE * jika record posisi > jumlah record IF xRecPos > RECCOUNT() GO BOTTOM && record akhir ELSE GO xRecPos && record posisi ENDIF .grdGridBapak.RecordSource="Bapak" .grdGridBapak.RecordSourceType = 1 .grdGridBapak.ColumnCount = 2 .grdGridBapak.Column1.Width = 50 .grdGridBapak.Column2.Width = 300 .grdGridBapak.Column1.Header1.Caption=; "KODE" .grdGridBapak.Column2.Header1.Caption=; "NAMA" * mengatur textbox .txtNoRecBapak.Value = RECNO() .txtTotRecBapak.Value = RECCOUNT() .txtKodeBapak.Value = Bapak.Kode .txtNamaBapak.Value = Bapak.Nama * mengatur textbox .txtKodeBapak.Enabled = .F. .txtNamaBapak.Enabled = .F. * mengatur grid .grdGridBapak.Enabled = .T. * filter data tabel Anak ke dalam * tabel AnakTmp * perintah SQL SELECT * FROM Anak ; INTO TABLE AnakTmp ; WHERE Kode = Bapak.Kode * mengatur grid .grdGridAnak.RecordSource = "AnakTmp" .grdGridAnak.RecordSourceType = 1 .grdGridAnak.ColumnCount = 3 .grdGridAnak.Column1.Width = 50 .grdGridAnak.Column2.Width = 70 .grdGridAnak.Column3.Width = 300 .grdGridAnak.Column1.Header1.Caption=; "KODE" .grdGridAnak.Column2.Header1.Caption=; "KD.ANAK" .grdGridAnak.Column3.Header1.Caption=; "NAMA ANAK" * mengatur grid .grdGridBapak.Refresh && direfresh .grdGridAnak.Refresh && direfresh * mengatur textbox .txtKodeAnak.Value = AnakTmp.Kode .txtNomorAnak.Value = AnakTmp.KdAnak .txtNamaAnak.Value = AnakTmp.NmAnak ENDIF ENDIF OTHERWISE * aktifkan prosedur ButtonBapak() ButtonBapak(.T.) * aktifkan prosedur ButtonBapak() ButtonAnak(.T.)

Page 48: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

124

* mengatur textbox .txtKodeBapak.Value = Bapak.Kode .txtNamaBapak.Value = Bapak.Nama * mengatur textbox .txtKodeBapak.Enabled = .F. && non-aktif .txtNamaBapak.Enabled = .F. && non-aktif * mengatur button .cmdEdit.Caption = "Edit" && button Edit .cmdDel.Caption = "Del" && button Del * mengatur grid .grdGridAnak.Enabled = .T. && aktif .grdGridBapak.Enabled = .T. && aktif .grdGridBapak.Refresh && direfresh ENDCASE ENDWITH ENDIF ENDPROC ENDDEFINE *--------------------------------------- DEFINE CLASS myCmdAbout As CommandButton Top = _Screen.cmdDel.Top && posisi atas Left = _Screen.cmdDel.Left + ; _Screen.cmdDel.Width && posisi kiri Height = _Screen.cmdDel.Height && tinggi button Width = _Screen.cmdDel.Width && lebar button Caption = "About" && isi button ToolTipText = "Tentang Program" && tips kecil Visible = .T. && tampak di layar monitor * prosedur jika button diklik PROCEDURE Click * tampilkan pesan MESSAGEBOX("Program ini disumbangkan kepada"+; CHR(13)+"komunitas programer di Indonesia."+; CHR(13)+"Semoga bermanfaat.....",0,"About") ENDPROC ENDDEFINE *--------------------------------------- DEFINE CLASS myCmdClose As CommandButton Top = _Screen.cmdAbout.Top && posisi atas Left = _Screen.cmdAbout.Left + ; _Screen.cmdAbout.Width && posisi kiri Height = _Screen.cmdAbout.Height && tinggi button Width = _Screen.cmdAbout.Width && lebar button Caption = "Close" && isi button Cancel = .T. && aktif jika tombol ESC ditekan ToolTipText = "Selesai, kembali ke Windows" && tips Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik Stop() && aktifkan prosedur Stop() ENDPROC ENDDEFINE ***************** * KELOMPOK ANAK * ***************** *-------------------------------- * Kelompok Label Anak *-------------------------------- DEFINE CLASS myJudulAnak As Label Top = 280 && posisi atas Left = 24 && posisi kiri Width = 108 && lebar label

Page 49: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

125

Height = 22 && tinggi label FontBold = .T. && huruf tebal ForeColor = RGB(255,0,0) && warna huruf Caption = "CHILD TABLE" && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *------------------------------- DEFINE CLASS myKodeAnak As Label Top = 305 && posisi atas Left = 24 && posisi kiri Width = 36 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Caption = "Kode" && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *-------------------------------- DEFINE CLASS myNoRecAnak As Label Top = 305 && posisi atas Left = 168 && posisi kiri Width = 48 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Caption = "Rec.No." && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *-------------------------------- DEFINE CLASS myNomorAnak As Label Top = 330 && posisi atas Left = 24 && posisi kiri Width = 36 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Caption = "No." && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *-------------------------------- DEFINE CLASS myTabelCucu As Label Top = 330 && posisi atas Left = 168 && posisi kiri Width = 150 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Caption = "Pengelolaan Tabel Cucu" && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *------------------------------- DEFINE CLASS myNamaAnak As Label Top = 355 && posisi atas Left = 24 && posisi kiri Width = 36 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Caption = "MtKul." && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *------------------------------ * Kelompok Titik Anak *------------------------------ DEFINE CLASS myTitik04 As Label Top = 305 && posisi atas

Page 50: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

126

Left = 60 && posisi kiri Width = 12 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Alignment = 2 && isi di tengah label Caption = ":" && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *------------------------------ DEFINE CLASS myTitik05 As Label Top = 305 && posisi atas Left = 216 && posisi kiri Width = 12 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Alignment = 2 && isi di tengah label Caption = ":" && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *------------------------------ DEFINE CLASS myTitik06 As Label Top = 330 && posisi atas Left = 60 && posisi kiri Width = 12 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Alignment = 2 && isi di tengah label Caption = ":" && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *----------------------------- DEFINE CLASS myTitik07 As Label Top = 355 && posisi atas Left = 60 && posisi kiri Width = 12 && lebar label Height = 22 && tinggi label FontBold = .T. && huruf tebal Alignment = 2 && isi di tengah label Caption = ":" && isi label Visible = .T. && tampak di layar monitor ENDDEFINE *------------------------------------ * Kelompok TextBox Anak *------------------------------------ DEFINE CLASS myTxtKodeAnak As TextBox Top = 305 && posisi atas Left = 70 && posisi kiri Width = 60 && lebar textbox Height = 22 && tinggi textbox Alignment = 0 && isi di kiri textbox Enabled = .F. && di-non-aktifkan Format = "999" && format tampilan InputMask = "999" && input tampilan ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledBackColor = RGB(128,255,128) && warna non-aktif DisabledForeColor = RGB(255,0,0) && warna non-aktif Visible = .T. && tampak di layar monitor ENDDEFINE *------------------------------------- DEFINE CLASS myTxtNoRecAnak As TextBox

Page 51: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

127

Top = 305 && posisi atas Left = 230 && posisi kiri Width = 60 && lebar textbox Height = 22 && tinggi textbox Alignment = 2 && isi di kanan textbox Enabled = .F. && di-non-aktifkan Format = "999999" && format tampilan InputMask = "999999" && input tampilan TabStop = .F. && tidak bisa ditab ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledBackColor = RGB(128,255,128) && warna non-aktif DisabledForeColor = RGB(255,0,0) && warna non-aktif Visible = .T. && tampak di layar monitor ENDDEFINE *-------------------------------------- DEFINE CLASS myTxtTotRecAnak As TextBox Top = 305 && posisi atas Left = 300 && posisi kiri Width = 60 && lebar textbox Height = 22 && tinggi textbox Alignment = 2 && isi di kanan textbox Enabled = .F. && di-non-aktifkan Format = "999999" && format tampilan InputMask = "999999" && input tampilan TabStop = .F. && tidak bisa ditab ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledBackColor = RGB(128,255,128) && warna non-aktif DisabledForeColor = RGB(255,0,0) && warna non-aktif Visible = .T. && tampak di layar monitor ENDDEFINE *-------------------------------------- DEFINE CLASS myTxtNomorAnak As ComboBox Top = 330 && posisi atas Left = 70 && posisi kiri Width = 60 && lebar textbox Height = 22 && tinggi textbox Alignment = 0 && isi di kiri textbox Enabled = .F. && di-non-aktifkan Format = "" && format tampilan InputMask = "" && input tampilan ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledBackColor = RGB(128,255,128) && warna non-aktif DisabledForeColor = RGB(255,0,0) && warna non-aktif Visible = .T. && tampak di layar monitor * aktif jika terjadi perubahan PROCEDURE InteractiveChange * isi field Nama tabel Cucu.dbf _Screen.TxtNamaAnak.Value = Cucu.NmCucu ENDPROC ENDDEFINE *------------------------------------ DEFINE CLASS myTxtNamaAnak As TextBox Top = 355 && posisi atas Left = 70 && posisi kiri Width = 290 && lebar textbox Height = 22 && tinggi textbox Alignment = 0 && isi di kiri textbox Enabled = .F. && di-non-aktifkan

Page 52: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

128

Format = "" && format tampilan InputMask = "" && input tampilan MaxLength = 35 && panjang maksimum ForeColor = RGB(0,0,255) && warna huruf BackColor = RGB(255,255,255) && warna dasar DisabledBackColor = RGB(128,255,128) && warna non-aktif DisabledForeColor = RGB(255,0,0) && warna non-aktif Visible = .T. && tampak di layar monitor ENDDEFINE *--------------------------------- * Kelompok Grid Anak *--------------------------------- DEFINE CLASS myGrdGridAnak As Grid Top = 385 && posisi atas Left = 20 && posisi kiri Width = 350 && lebar textbox Height = 175 && tinggi textbox ColumnCount = 3 && jumlah kolom DeleteMark = .F. && tidk bisa dihapus ReadOnly = .T. && cuma bisa dibaca RecordSource = "AnakTmp" && tabel AnakTmp.dbf RecordSourceType = 1 && alias SplitBar = .F. && tidak ada splitbar TabStop = .F. && tidak ada tabstop Column1.Name = "Column1" && nama kolom 1 Column2.Name = "Column2" && nama kolom 2 Column3.Name = "Column3" && nama kolom 3 Visible = .T. && tampak di layar monitor PROCEDURE AfterRowColChange && jika terjadi perubahan * parameter ini harus ada, tidak digunakan LPARAMETERS nColIndex * aktifkan prosedur TampilkanAnak() TampilkanAnak() ENDPROC ENDDEFINE *-------------------------------------- * Kelompok CommandButton Anak *-------------------------------------- DEFINE CLASS myCmdCucu As CommandButton Top = 330 && posisi atas Left = 130 && posisi kiri Width = 30 && lebar button Height = 22 && tinggi button Caption = "..." && isi button ToolTipText = "Pengelolaan Tabel Cucu" && tip kecil Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik oKusForm = CREATEOBJECT("myFrmKusForm") && buat form oKusForm.Show && tampilkan form READ EVENTS && aktifkan semua event ENDPROC ENDDEFINE *----------------------------------------- DEFINE CLASS myCmdTopAnak As CommandButton Top = 565 && posisi atas Left = 20 && posisi kiri Width = 25 && lebar button Height = 25 && tinggi button Caption = "|<" && isi button ToolTipText = "Record Awal" && tip kecil Visible = .T. && tampak di layar monitor

Page 53: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

129

PROCEDURE Click && aktif jika button diklik * aktifkan prosedur NavigasiAnak() NavigasiAnak("FIRST") ENDPROC ENDDEFINE *------------------------------------------ DEFINE CLASS myCmdPrevAnak As CommandButton Top = _Screen.cmdTopAnak.Top && posisi atas Left = _Screen.cmdTopAnak.Left + ; _Screen.cmdTopAnak.Width && posisi kiri Width = _Screen.cmdTopAnak.Width && lebar button Height = _Screen.cmdTopAnak.Height && tinggi button Caption = "<" && isi button Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik * aktifkan prosedur NavigasiAnak() NavigasiAnak("PREV") ENDPROC ENDDEFINE *------------------------------------------ DEFINE CLASS myCmdNextAnak As CommandButton Top = _Screen.cmdPrevAnak.Top && posisi atas Left = _Screen.cmdPrevAnak.Left + ; _Screen.cmdPrevAnak.Width && posisi kiri Width = _Screen.cmdPrevAnak.Width && lebar button Height = _Screen.cmdPrevAnak.Height && tinggi button Caption = ">" && isi button Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik * aktifkan prosedur NavigasiAnak() NavigasiAnak("NEXT") ENDPROC ENDDEFINE *-------------------------------------------- DEFINE CLASS myCmdBottomAnak As CommandButton Top = _Screen.cmdNextAnak.Top && posisi atas Left = _Screen.cmdNextAnak.Left + ; _Screen.cmdNextAnak.Width && posisi kiri Width = _Screen.cmdNextAnak.Width && lebar button Height = _Screen.cmdNextAnak.Height && tinggi button Caption = ">|" && isi button Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik * aktifkan prosedur NavigasiAnak() NavigasiAnak("LAST") ENDPROC ENDDEFINE *----------------------------------------- DEFINE CLASS myCmdAddAnak As CommandButton Top = _Screen.cmdBottomAnak.Top && posisi atas Left = _Screen.cmdBottomAnak.Left + ; _Screen.cmdBottomAnak.Width && posisi kiri Width = _Screen.cmdBottomAnak.Width + 25 && lebar Height = _Screen.cmdBottomAnak.Height && tinggi button Caption = "Add" && isi button Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik * variabel lokal LOCAL xKodeAnak, xNomorAnak, xNamaAnak SELECT AnakTmp && aktifkan tabel AnakTmp * jika jumlah record sudah maksimum, maka:

Page 54: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

130

IF RECCOUNT() >= nMaxRec * Tampilkan pesan TampilkanRecordMax() ELSE * mengatur form _Screen WITH _Screen DO CASE CASE .cmdAddAnak.Caption = "Add" && Add * aktifkan prosedur ButtonBapak() ButtonBapak(.F.) * aktifkan prosedur ButtonAnak() ButtonAnak(.F.) .grdGridBapak.Enabled = .F. && non-aktif .grdGridAnak.Enabled = .F. && non-aktif .cmdAddAnak.Enabled = .T. && aktif .cmdEditAnak.Enabled = .T. && aktif .cmdAddAnak.Caption = "Save" .cmdEditAnak.Caption = "Cancel" .txtKodeAnak.Value = .txtKodeBapak.Value .txtNomorAnak.Value = "" && textbox .txtNamaAnak.Value = "" && textbox .txtNomorAnak.Enabled = .T. && aktif .txtNamaAnak.Enabled = .T. && aktif * kursor berada di filed Nomor .txtNomorAnak.Setfocus CASE .cmdAddAnak.Caption = "Save" && Save * variabel sementara xKodeAnak = .txtKodeAnak.Value xNomorAnak = .txtNomorAnak.Value xNamaAnak = .txtNamaAnak.Value * perintah SQL-tambah data tabel Anak.dbf INSERT INTO Anak (Kode, KdAnak, NmAnak) ; VALUES (xKodeAnak, xNomorAnak, xNamaAnak) SELECT AnakTmp && tabel AnakTmp.dbf APPEND BLANK && tambahkan satu record * isi dengan variabel berikut ini REPLACE AnakTmp.Kode ; WITH .txtKodeAnak.Value && simpan data REPLACE AnakTmp.KdAnak ; WITH .txtNomorAnak.Value &&simpan data REPLACE AnakTmp.NmAnak ; WITH .txtNamaAnak.Value && simpan data GO BOTTOM && menuju record akhir * aktifkan prosedur ButtonBapak() ButtonBapak(.T.) * aktifkan prosedur ButtonAnak() ButtonAnak(.T.) * mengatur button dan textbox .cmdAddAnak.Caption = "Add" .cmdEditAnak.Caption = "Edit" .txtKodeAnak.Value = AnakTmp.Kode .txtNomorAnak.Value = AnakTmp.KdAnak .txtNamaAnak.Value = AnakTmp.NmAnak .txtNomorAnak.Enabled = .F. && non-aktif .txtNamaAnak.Enabled = .F. && non-aktif .grdGridBapak.Enabled = .T. && aktif .grdGridAnak.Enabled = .T. && aktif .grdGridAnak.Refresh && grid direfresh ENDCASE ENDWITH ENDIF

Page 55: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

131

ENDPROC ENDDEFINE *------------------------------------------ DEFINE CLASS myCmdEditAnak As CommandButton Top = _Screen.cmdAddAnak.Top && posisi atas Left = _Screen.cmdAddAnak.Left + ; _Screen.cmdAddAnak.Width && posisi kiri Width = _Screen.cmdAddAnak.Width && lebar button Height = _Screen.cmdAddAnak.Height && tinggi button Caption = "Edit" && isi button Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik * variabel lokal LOCAL xKodeAnak, xNomorAnak, xNamaAnak SELECT AnakTmp && aktifkan tabel AnakTmp.dbf IF RECCOUNT() = 0 && jika file kosong, maka: TampilkanFileKosong() && tampilkan pesan ELSE && jika file isi, maka: * mengatur form _Screen WITH _Screen DO CASE CASE .cmdEditAnak.Caption = "Edit" && Edit * aktifkan prosedur ButtonBapak() ButtonBapak(.F.) * aktifkan prosedur ButtonAnak() ButtonAnak(.F.) * mengatur grid .grdGridBapak.Enabled = .F. && non-aktif .grdGridAnak.Enabled = .F. && non-aktif .cmdEditAnak.Enabled = .T. && aktif .cmdDelAnak.Enabled = .T. && aktif .cmdEditAnak.Caption = "Save" .cmdDelAnak.Caption = "Cancel" .txtKodeAnak.Value = AnakTmp.Kode .txtNomorAnak.Value = AnakTmp.KdAnak .txtNamaAnak.Value = AnakTmp.NmAnak .txtKodeAnak.Enabled = .F. && non-aktif .txtNomorAnak.Enabled = .T. && aktif .txtNamaAnak.Enabled = .F. && aktif * kursor berada di filed Nomor .txtNomorAnak.Setfocus CASE .cmdEditAnak.Caption = "Save" && Save * variabel sementara xKodeAnak = .txtKodeAnak.Value xNomorAnak = .txtNomorAnak.Value xNamaAnak = .txtNamaAnak.Value * perintah SQL-update data tabel Anak.dbf UPDATE Anak SET KdAnak = xNomorAnak, ; NmAnak = xNamaAnak WHERE Kode = xKodeAnak SELECT AnakTmp && tabel AnakTmp.dbf REPLACE AnakTmp.KdAnak ; WITH .txtNomorAnak.Value && simpan data REPLACE AnakTmp.NmAnak ; WITH .txtNamaAnak.Value && simpan data * aktifkan prosedur ButtonBapak() ButtonBapak(.T.) * aktifkan prosedur ButtonAnak() ButtonAnak(.T.) * mengatur button dan textbox .cmdEditAnak.Caption = "Edit" .cmdDelAnak.Caption = "Del"

Page 56: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

132

.txtKodeAnak.Value = AnakTmp.Kode .txtNomorAnak.Value = AnakTmp.KdAnak .txtNamaAnak.Value = AnakTmp.NmAnak .txtKodeAnak.Enabled = .F. && non-aktif .txtNomorAnak.Enabled = .F. && non-aktif .txtNamaAnak.Enabled = .F. && non-aktif .grdGridBapak.Enabled = .T. && grid aktif .grdGridAnak.Enabled = .T. && grid aktif .grdGridAnak.Refresh && grid direfresh OTHERWISE * aktifkan prosedur ButtonBapak() ButtonBapak(.T.) * aktifkan prosedur ButtonAnak() ButtonAnak(.T.) * mengatur button dan textbox .cmdAddAnak.Caption = "Add" .cmdEditAnak.Caption = "Edit" .cmdDelAnak.Caption = "Del" .txtKodeAnak.Value = AnakTmp.Kode .txtNomorAnak.Value = AnakTmp.KdAnak .txtNamaAnak.Value = AnakTmp.NmAnak .txtKodeAnak.Enabled = .F. && non-aktif .txtNomorAnak.Enabled = .F. && non-aktif .txtNamaAnak.Enabled = .F. && non-aktif .grdGridBapak.Enabled = .T. && grid aktif .grdGridAnak.Enabled = .T. && grid aktif .grdGridAnak.Refresh && grid direfresh ENDCASE ENDWITH ENDIF ENDPROC ENDDEFINE *----------------------------------------- DEFINE CLASS myCmdDelAnak As CommandButton Top = _Screen.cmdEditAnak.Top && posisi atas Left = _Screen.cmdEditAnak.Left + ; _Screen.cmdEditAnak.Width && posisi kiri Width = _Screen.cmdEditAnak.Width && lebar button Height = _Screen.cmdEditAnak.Height && tinggi button Caption = "Del" && isi button Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik SELECT AnakTmp && aktifkan tabel AnakTmp.dbf IF RECCOUNT() = 0 && jika file kosong, maka: TampilkanFileKosong() && tampilkan pesan ELSE && jika file isi, maka: * mengatur form _Screen WITH _Screen DO CASE CASE .cmdDelAnak.Caption = "Del" && button Del * tampilkan pilihan YES atau NO IF MESSAGEBOX("Anda ingin menghapus record?",; 4+32+256,"Konfirmasi") = 6 && pilih YES xRecPos = RECNO() && posisi record SELECT AnakTmp && aktifkan tabel AnakTmp DELETE && hapus record PACK && pastikan record dihapus * jika file kosong, maka: IF RECCOUNT() = 0 * Tampilkan pesan TampilkanFileKosong()

Page 57: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

133

ELSE && jika file isi, maka: * jika posisi record > jumlah record IF xRecPos > RECCOUNT() GO BOTTOM && menuju record akhir ELSE GO xRecPos && menuju posisi record ENDIF ENDIF * aktifkan prosedur TampilkanAnak() TampilkanAnak() * mengatur grid .grdGridAnak.RecordSource = ; "AnakTmp" && isi grid .grdGridAnak.RecordSourceType=1 .grdGridAnak.ColumnCount = 3 .grdGridAnak.Column1.Width = 50 .grdGridAnak.Column2.Width = 50 .grdGridAnak.Column3.Width = 180 * judul kolom 1, 2 dan 3 .grdGridAnak.Column1.Header1.Caption=; "KODE" .grdGridAnak.Column2.Header1.Caption=; "KD.ANAK" .grdGridAnak.Column3.Header1.Caption=; "NAMA ANAK" .grdGridAnak.Refresh && direfresh ENDIF OTHERWISE * aktifkan prosedur ButtonBapak() ButtonBapak(.T.) * aktifkan prosedur ButtonAnak() ButtonAnak(.T.) * mengatur button, textbox dan grid .cmdEditAnak.Caption = "Edit" .cmdDelAnak.Caption = "Del" .txtKodeBapak.Value = Bapak.Kode .txtNamaBapak.Value = Bapak.Nama .txtNomorAnak.Enabled = .F. && non-aktif .txtNamaAnak.Enabled = .F. && non-aktif .grdGridBapak.Enabled = .T. && grid aktif .grdGridAnak.Enabled = .T. && grid aktif .grdGridAnak.Refresh && grid direfresh ENDCASE ENDWITH ENDIF ENDPROC ENDDEFINE *------------------------------------------- DEFINE CLASS myCmdAboutAnak As CommandButton Top = _Screen.cmdDelAnak.Top && posisi atas Left = _Screen.cmdDelAnak.Left + ; _Screen.cmdDelAnak.Width && posisi kiri Width = _Screen.cmdDelAnak.Width && lebar button Height = _Screen.cmdDelAnak.Height && tinggi button Caption = "About" && isi button Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik * tampilkan pesan MESSAGEBOX("Program ini disumbangkan kepada"+; CHR(13)+"komunitas programer di Indonesia."+; CHR(13)+"Semoga bermanfaat.....",0,"About")

Page 58: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

134

ENDPROC ENDDEFINE *--- definisi sub-class dari myCmdClose --- *--- duplikasi dari cmdClose --- DEFINE CLASS myCmdCloseAnak As myCmdClose Top = _Screen.cmdAboutAnak.Top && posisi atas Left = _Screen.cmdAboutAnak.Left + ; _Screen.cmdAboutAnak.Width && posisi kiri Width = _Screen.cmdAboutAnak.Width && lebar button Height = _Screen.cmdAboutAnak.Height && tinggi button Caption = "Close" && isi button FontItalic = .T. && bentuk huruf miring Visible = .T. && tampak di layar monitor PROCEDURE Click && aktif jika button diklik * :: ->Scope Resolution Operator * aktifkan prosedur Click dari button myCmdClose myCmdClose::Click ENDPROC ENDDEFINE ****************************** * Kelompok Prosedur-prosedur * ****************************** *--- prosedur Start() --- PROCEDURE Start CLOSE TABLES ALL && tutup semua tabel * periksa, jika file Bapak.dbf tidak ada, maka: IF NOT FILE("Bapak.dbf") * buat file baru Bapak.dbf CREATE TABLE Bapak( Kode C(3), Nama C(30) ) ENDIF * periksa, jika file Anak.dbf tidak ada, maka: IF NOT FILE("Anak.dbf") * buat file baru Anak.dbf CREATE TABLE Anak(Kode C(3),KdAnak C(3),NmAnak C(30)) ENDIF * periksa, jika file Cucu.dbf tidak ada, maka: IF NOT FILE("Cucu.dbf") * buat file baru Cucu.dbf CREATE TABLE Cucu( KdCucu C(3), NmCucu C(30)) ENDIF CLOSE TABLES ALL && tutup semua tabel USE Cucu ALIAS Cucu EXCLUSIVE IN 0 && tabel Cucu.dbf USE Anak ALIAS Anak EXCLUSIVE IN 0 && tabel Anak.dbf USE Bapak ALIAS Bapak EXCLUSIVE IN 0 && tabel Bapak.dbf * perintah SQL, mengambil data dari tabel Anak.dbf SELECT * FROM Anak INTO TABLE AnakTmp ; WHERE Kode = Bapak.Kode && perintah SQL * mengatur from _Screen WITH _Screen .Tanggal.Caption = TampilkanTanggal() && tanggal .grdGridBapak.RecordSource = "Bapak" && Bapak.dbf .grdGridBapak.RecordSourceType = 1 && alias .grdGridBapak.ColumnCount = 2 && jumlah kolom .grdGridBapak.Column1.Width = 50 && lebar kolom 1 .grdGridBapak.Column2.Width = 260 && lebar kolom 2 .grdGridBapak.Column1.Header1.Caption = "KODE" .grdGridBapak.Column2.Header1.Caption = "NAMA" .grdGridAnak.RecordSource = "AnakTmp" && AnakTmp.dbf .grdGridAnak.RecordSourceType = 1 && alias .grdGridAnak.ColumnCount = 3 && jumlah kolom .grdGridAnak.Column1.Width = 50 && lebar kolom 1

Page 59: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

135

.grdGridAnak.Column2.Width = 50 && lebar kolom 2 .grdGridAnak.Column3.Width = 210 && lebar kolom 3 .grdGridAnak.Column1.Header1.Caption = "KODE" .grdGridAnak.Column2.Header1.Caption = "KD.ANAK" .grdGridAnak.Column3.Header1.Caption = "NAMA ANAK" .txtNomorAnak.RowSource = "Cucu" && tabel Cucu.dbf .txtNomorAnak.RowSourceType = 2 && alias .txtNomorAnak.ColumnCount = 2 && jumlah kolom .txtNomorAnak.ColumnWidths = "50,200" && lebar kolom .txtNomorAnak.DisplayCount = 10 && jumlah ditampilkan .grdGridBapak.Refresh && grid direfresh .grdGridAnak.Refresh && grid direfresh ENDWITH TampilkanAnak() && aktifkan prosedur TampilkanAnak() TampilkanBapak() && aktifkan prosedur TampilkanBapak() ENDPROC *--- prosedur Stop() --- PROCEDURE Stop RefreshAnakTmp() && aktifkan prosedur RefreshAnakTmp() SELECT Bapak && aktifkan tabel Bapak * jika jumlah record maksimum, maka: IF RECCOUNT() > nMaxRec GO (nMaxRec+1) && menuju record nMaxRec + 1 DELETE NEXT RECCOUNT() && hapus beberapa record PACK && pastikan record dihapus dari tabel ENDIF SELECT Cucu && aktifkan tabel Cucu * jika jumlah record maksimum, maka: IF RECCOUNT() > nMaxRec GO (nMaxRec+1) && menuju record nMaxRec + 1 DELETE NEXT RECCOUNT() && hapus beberapa record PACK && pastikan record dihapus dari tabel ENDIF * mengatur form _Screen WITH _Screen .grdGridBapak.RecordSource = "" && kosongkan .grdGridAnak.RecordSource = "" && kosongkan .txtNomorAnak.RowSource = "" && kosongkan ENDWITH CLOSE TABLES ALL && tutup semua tabel DELETE FILE AnakTmp.DBF && hapus file AnakTmp.dbf CLEAR EVENTS && hapus semua event QUIT && selesai, keluar ke Windows ENDPROC *--- prosedur NavigasiBapak() --- PROCEDURE NavigasiBapak PARAMETERS xPar SELECT Bapak && aktifkan tabel Bapak.dbf IF RECCOUNT() = 0 && jika file kosong, maka: TampilkanFileKosong() && tampilkan pesan ELSE && jika file isi, maka: DO CASE CASE xPar = "FIRST" * jika posisi di awal record IF RECNO() = 1 TampilkanTopOfFile() && tampilkan pesan ELSE && jika tidak diposisi awal record GoRecord(xPar) && menuju awal record ENDIF CASE xPar = "PREV" * jika posisi di awal record

Page 60: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

136

IF RECNO() = 1 TampilkanTopOfFile() && tampilkan pesan ELSE && jika tidak diposisi awal record GoRecord(xPar) && menuju record sebelumnya ENDIF CASE xPar = "NEXT" * jika posisi di akhir record IF RECNO() = RECCOUNT() TampilkanEndOfFile() && tampilkan pesan ELSE && jika tidak diposisi akhir record GoRecord(xPar) && menuju record berikutnya ENDIF CASE xPar = "LAST" * jika posisi di akhir record IF RECNO() = RECCOUNT() TampilkanEndOfFile() && tampilkan pesan ELSE && jika tidak diposisi akhir record GoRecord(xPar) && menuju akhir record ENDIF ENDCASE RefreshAnakTmp() && aktifkan RefreshAnakTmp() TampilkanAnak() && aktifkan TampilkanAnak() TampilkanBapak() && aktifkan TampilkanBapak() ENDIF ENDPROC *--- prosedur NavigasiAnak() --- PROCEDURE NavigasiAnak PARAMETERS xPar && menerima kiriman SELECT AnakTmp && aktifkan tabel AnakTmp.dbf IF RECCOUNT() = 0 && jika file kosong, maka: TampilkanFileKosong() && tampilkan pesan ELSE && jika file isi, maka: DO CASE CASE xPar = "FIRST" * jika posisi di awal record IF RECNO() = 1 TampilkanTopOfFile() && tampilkan pesan ELSE && jika tidak diposisi awal record GoRecord(xPar) && menuju awal record ENDIF CASE xPar = "PREV" * jika posisi di awal record IF RECNO() = 1 TampilkanTopOfFile() && tampilkan pesan ELSE && jika tidak diposisi awal record GoRecord(xPar) && menuju record sebelumnya ENDIF CASE xPar = "NEXT" * jika posisi di akhir record IF RECNO() = RECCOUNT() TampilkanEndOfFile() && tampilkan pesan ELSE && jika tidak diposisi akhir record GoRecord(xPar) && menuju record berikutnya ENDIF CASE xPar = "LAST" * jika posisi di akhir record IF RECNO() = RECCOUNT() TampilkanEndOfFile() && tampilkan pesan ELSE && jika tidak diposisi akhir record GoRecord(xPar) && menuju akhir record ENDIF

Page 61: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

137

ENDCASE * aktifkan prosedur TampilkanAnak() TampilkanAnak() ENDIF ENDPROC *--- prosedur TampilkanBapak() --- PROCEDURE TampilkanBapak SELECT Bapak && aktifkan tabel Bapak.dbf WITH _Screen IF RECCOUNT() = 0 .txtNoRecBapak.Value = 0 && isi textbox NoRec .txtTotRecBapak.Value = 0 && isi textbox TotRec .txtKodeBapak.Value = "" && isi textbox Kode .txtNamabapak.Value = "" && isi textbox Nama ELSE .txtNoRecBapak.Value = RECNO() && NoRec .txtTotRecBapak.Value = RECCOUNT() && TotRec .txtKodeBapak.Value = Bapak.Kode && Kode .txtNamaBapak.Value = Bapak.Nama && Nama ENDIF .grdGridBapak.Refresh && grid direfresh ENDWITH ENDPROC *--- prosedur TampilkanAnak() --- PROCEDURE TampilkanAnak SELECT AnakTmp && aktifkan tabel AnakTmp.dbf * mengatur form _Screen WITH _Screen IF RECCOUNT() = 0 && jika file kosong, maka: .txtNoRecAnak.Value = 0 && isi textbox NoRec .txtTotRecAnak.Value = 0 && isi textbox TotRec .txtKodeAnak.Value = "" && isi textbox Kode .txtNomorAnak.Value = "" && isi textbox Nomor .txtNamaAnak.Value = "" && isi textbox Nama ELSE .txtNoRecAnak.Value = RECNO() && NoRec .txtTotRecAnak.Value = RECCOUNT() && TotRec .txtKodeAnak.Value = AnakTmp.Kode && Kode .txtNomorAnak.Value = AnakTmp.KdAnak && Nomor .txtNamaAnak.Value = AnakTmp.NmAnak && Nama ENDIF .grdGridAnak.Refresh && grid direfresh ENDWITH ENDPROC *--- prosedur BapakRefresh() --- PROCEDURE BapakRefresh SELECT Bapak && aktifkan tabel Bapak.dbf N = RECCOUNT() && jumlah record xUrut = .F. && variabel penanda (switching) * proses pengurutan BUBBLE SORT * untuk jumlah record 1.000 = 00:01:00 DO WHILE xUrut = .F. xUrut = .T. FOR I = 1 TO ( N - 1 ) GO I && menuju record I xKode = Bapak.Kode && ambil nilai Kode xNama = Bapak.Nama && ambil nilai Nama GO ( I + 1 ) && menuju record (I+1) yKode = Bapak.Kode && ambil nilai Kode yNama = Bapak.Nama && ambil nilai Nama IF xKode > yKode

Page 62: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

138

GO I && menuju record I REPLACE Bapak.Kode WITH yKode && simpan yKode REPLACE Bapak.Nama WITH yNama && simpan yNama GO ( I + 1 ) && menuju record (I+1) REPLACE Bapak.Kode WITH xKode && simpan xKode REPLACE Bapak.Nama WITH xNama && simpan xNama xUrut = .F. ENDIF NEXT ENDDO ENDPROC *--- prosedur RefreshAnakTmp() --- PROCEDURE RefreshAnakTmp * menghapus data dari tabel Anak DELETE FROM Anak WHERE Kode=_Screen.txtKodeBapak.Value * mengisi data ke tabel Anak dari tabel AnakTmp INSERT INTO Anak (Kode, KdAnak, NmAnak) ; SELECT Kode, KdAnak, NmAnak ; FROM AnakTmp && perintah SQL SELECT Anak && aktifkan tabel Anak PACK && pastikan data terhapus dari tabel Anak * memfilter tabel Anak ke dalam tabel AnakTmp SELECT * FROM Anak INTO TABLE AnakTmp ; WHERE Kode = Bapak.Kode ; ORDER BY KdAnak && perintah SQL SELECT AnakTmp && aktifkan tabel AnakTmp * mengatur form _Screen WITH _Screen .txtKodeAnak.Value = AnakTmp.Kode && textbox Kode .txtNomorAnak.Value = AnakTmp.KdAnak && textbox Nomor .txtNamaAnak.Value = AnakTmp.NmAnak && textbox Nama * memperbaiki grid grdGridAnak .grdGridAnak.RecordSource = "AnakTmp" && AnakTmp .grdGridAnak.RecordSourceType = 1 && alias .grdGridAnak.ColumnCount = 3 && jumlah kolom .grdGridAnak.Column1.Width = 50 && lebar kolom 1 .grdGridAnak.Column2.Width = 70 && lebar kolom 2 .grdGridAnak.Column3.Width = 300 && lebar kolom 3 .grdGridAnak.Column1.Header1.Caption = "KODE" .grdGridAnak.Column2.Header1.Caption = "KD.ANAK" .grdGridAnak.Column3.Header1.Caption = "NAMA ANAK" .grdGridAnak.Refresh && grid direfresh ENDWITH TampilkanAnak() && aktifkan prosedur TampilkanAnak() ENDPROC *--- prosedur ButtonBapak() --- PROCEDURE ButtonBapak PARAMETERS xPar && menerima variabel True/False * mengatur Button True/False WITH _Screen .cmdTop.Enabled = xPar && button ON/OFF .cmdPrev.Enabled = xPar && button ON/OFF .cmdNext.Enabled = xPar && button ON/OFF .cmdBottom.Enabled = xPar && button ON/OFF .cmdAdd.Enabled = xPar && button ON/OFF .cmdEdit.Enabled = xPar && button ON/OFF .cmdDel.Enabled = xPar && button ON/OFF .cmdAbout.Enabled = xPar && button ON/OFF .cmdClose.Enabled = xPar && button ON/OFF ENDWITH ENDPROC

Page 63: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

139

*--- prosedur ButtonAnak() --- PROCEDURE ButtonAnak PARAMETERS xPar && menerima variabel True/False * mengatur Button True/False WITH _Screen .cmdCucu.Enabled = xPar .cmdTopAnak.Enabled = xPar && button ON/OFF .cmdPrevAnak.Enabled = xPar && button ON/OFF .cmdNextAnak.Enabled = xPar && button ON/OFF .cmdBottomAnak.Enabled = xPar && button ON/OFF .cmdAddAnak.Enabled = xPar && button ON/OFF .cmdEditAnak.Enabled = xPar && button ON/OFF .cmdDelAnak.Enabled = xPar && button ON/OFF .cmdAboutAnak.Enabled = xPar && button ON/OFF .cmdCloseAnak.Enabled = xPar && button ON/OFF ENDWITH ENDPROC ************************************** * mendefinisikan form 'myFrmKusForm' * ************************************** DEFINE CLASS myFrmKusForm AS form Name = "frmKusForm" && nama form Caption = "Tabel Cucu" && judul form Top = 0 && posisi atas Left = 0 && posisi kiri Width = 370 && lebar form Height = 250 && tinggi form BorderStyle = 2 && border style BackColor = RGB(236,233,216) && warna dasar AutoCenter = .T. && form di tengah ControlBox = .F. && button controbox dihilangkan Closable = .F. && button close dihilangkan Movable = .T. && bisa dipindahkan MinButton = .F. && tombol minimum non-aktif MaxButton = .F. && tombol maksimum non-aktif ShowTips = .T. && tampilkan tips pendek WindowType = 1 && window type ***************************************************** * mengisi objek ke dalam form dengan cara yang lain * * mengisi objek beserta atributnya ke dalam form * ***************************************************** *--- definisi timer myWaktu ---* ADD OBJECT myWaktu AS Timer WITH ; Top = 0, ; Left = 0, ; Name = "Waktu", ; Interval = 1000 *--- tambahkan label myJudul --- ADD OBJECT lblMyJudul AS Label WITH ; Caption = "TABEL CUCU", ; FontName = "Arial", ; FontBold = .T., ; FontSize = 10, ; ForeColor = RGB(0,0,0), ; Left = 10, ; Top = 10, ; Width = 100, ; Height = 22, ; Visible = .T. *--- definisi label myTanggal ---* ADD OBJECT myTanggal AS Label WITH ;

Page 64: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

140

Top = 10, ; Left = 100, ; Width = 185, ; Height = 20, ; Caption = "", ; FontName = "Arial", ; Name = "Tanggal", ; Alignment = 1, ; Visible = .T. *--- definisi label myJam ---* ADD OBJECT myJam AS Label WITH ; Top = 10, ; Left = 290, ; Width = 50, ; Height = 20, ; Caption = TIME(), ; FontName = "Arial", ; Name = "Jam", ; Alignment = 1, ; Visible = .T. *--- tambahkan label myNoRec --- ADD OBJECT lblMyNoRec AS Label WITH ; Caption = "No.Rec.:", ; FontName = "Arial", ; FontSize = 10, ; ForeColor = RGB(0,0,0), ; Left = 175, ; Top = 35, ; Width = 70, ; Height = 20, ; Visible = .T. *--- tambahkan textbox myNoRec --- ADD OBJECT txtMyNoRec AS TextBox WITH ; Name = "txtNoRec", ; Value = 0, ; FontName = "Arial", ; FontSize = 9, ; DisabledForeColor = RGB(255,0,0), ; DisabledBackColor = RGB(224,224,224), ; Enabled = .F., ; Left = 235, ; Top = 35, ; Width = 50, ; Height = 24, ; MaxLength = 5, ; Visible = .T. *--- tambahkan textbox myTotRec --- ADD OBJECT txtMyTotRec AS TextBox WITH ; Name = "txtTotRec", ; Value = 0, ; FontName = "Arial", ; FontSize = 9, ; DisabledForeColor = RGB(255,0,0), ; DisabledBackColor = RGB(224,224,224), ; Enabled = .F., ; Left = 290, ; Top = 35, ; Width = 50, ; Height = 24, ; MaxLength = 5, ; Visible = .T.

Page 65: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

141

*--- tambahkan label myKodeCucu --- ADD OBJECT lblMyKodeCucu AS Label WITH ; Caption = "1. Kode", ; FontName = "Arial", ; FontSize = 10, ; ForeColor = RGB(0,0,0), ; Left = 10, ; Top = 35, ; Width = 50, ; Height = 20, ; Visible = .T. *--- tambahkan label myNamaCucu --- ADD OBJECT lblMyNamaCucu AS Label WITH ; Caption = "2. Nama", ; FontName = "Arial", ; FontSize = 10, ; ForeColor = RGB(0,0,0), ; Left = 10, ; Top = 60, ; Width = 50, ; Height = 20 Visible = .T. *--- tambahkan label myTitik01 --- ADD OBJECT lblMyTitik01 AS Label WITH ; Caption = ":", ; FontName = "Arial", ; FontSize = 10, ; ForeColor = RGB(0,0,0), ; Left = 60, ; Top = 35, ; Width = 10, ; Height = 20, ; Visible = .T. *--- tambahkan label myTitik02 --- ADD OBJECT lblMyTitik02 AS Label WITH ; Caption = ":", ; FontName = "Arial", ; FontSize = 10, ; ForeColor = RGB(0,0,0), ; Left = 60, ; Top = 60, ; Width = 10, ; Height = 20, ; Visible = .T. *--- tambahkan textbox txtMyKodeCucu --- ADD OBJECT txtMyKodeCucu AS TextBox WITH ; Name = "txtKodeCucu", ; Value = "", ; FontName = "Arial", ; FontSize = 9, ; ForeColor = RGB(0,0,255), ; DisabledForeColor = RGB(0,0,255), ; DisabledBackColor = RGB(224,224,224), ; Left = 70, ; Top = 35, ; Width = 60, ; Height = 24, ; InputMask = "999", ; Format = "999", ; Visible = .T. *--- tambahkan textbox txtMyNamaCucu ---

Page 66: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

142

ADD OBJECT txtMyNamaCucu AS TextBox WITH ; Name = "txtNamaCucu", ; Value = "", ; FontName = "Arial", ; FontSize = 9, ; ForeColor = RGB(0,0,255), ; DisabledForeColor = RGB(0,0,255), ; DisabledBackColor = RGB(224,224,224), ; Left = 70, ; Top = 60, ; Width = 270, ; Height = 24, ; MaxLength = 30, ; Visible = .T. *--- tambahkan grid grdMyGrid --- ADD OBJECT grdMyGrid AS grid WITH ; Name = "grdGrid", ; Top = 85, ; Left = 10, ; Width = 350, ; Height = 130, ; ColumnCount = 2, ; FontName = "Arial", ; FontSize = 9, ; ForeColor = RGB(0,0,255), ; HighlightStyle = 2, ; HighlightForeColor = RGB(0,0,255), ; HighlightBackColor = RGB(224,224,224), ; SelectedItemForeColor = RGB(0,0,0), ; SelectedItemBackColor = RGB(128,255,128), ; RecordSource = "Cucu", ; RecordSourceType = 1, ; AllowAutoColumnFit = 2, ; AllowHeaderSizing = .F., ; DeleteMark = .F., ; ReadOnly = .T., ; TabStop = .F., ; SplitBar = .F., ; Visible = .T. *--- tambahkan command button cmdMyFisrt --- ADD OBJECT cmdMyFIRST AS COMMANDBUTTON WITH ; Top = 215, ; Left = 10, ; Width = 25, ; Height = 25, ; Name = "cmdFIRST", ; Caption = "|<", ; FontName = "Arial", ; FontSize = 9, ; ForeColor = RGB(0,0,0), ; ToolTipText = "Record Awal", ; Visible = .T. *--- tambahkan command button cmdMyPrev --- ADD OBJECT cmdMyPREV AS COMMANDBUTTON WITH ; Top = 215, ; Left = 35, ; Width = 25, ; Height = 25, ; Name = "cmdPREV", ; Caption = "<", ; FontName = "Arial", ;

Page 67: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

143

FontSize = 9, ; ForeColor = RGB(0,0,0), ; ToolTipText = "Record Sebelumnya", ; Visible = .T. *--- tambahkan command button cmdMyNext --- ADD OBJECT cmdMyNEXT AS COMMANDBUTTON WITH ; Name = "cmdNEXT", ; Caption = ">", ; FontName = "Arial", ; FontSize = 9, ; ForeColor = RGB(0,0,0), ; ToolTipText = "Record Berikutnya", ; Top = 215, ; Left = 60, ; Width = 25, ; Height = 25, ; Visible = .T. *--- tambahkan command button cmdMyLast --- ADD OBJECT cmdMyLAST AS COMMANDBUTTON WITH ; Name = "cmdLAST", ; Caption = ">|", ; FontName = "Arial", ; FontSize = 9, ; ForeColor = RGB(0,0,0), ; ToolTipText = "Record Akhir", ; Top = 215, ; Left = 85, ; Width = 25, ; Height = 25, ; Visible = .T. *--- tambahkan command button cmdMyAdd --- ADD OBJECT cmdMyADD AS COMMANDBUTTON WITH ; Name = "cmdADD", ; Caption = "Add", ; FontName = "Arial", ; FontSize = 9, ; ForeColor = RGB(0,0,0), ; ToolTipText = "Tambah Data", ; Top = 215, ; Left = 110, ; Width = 60, ; Height = 25, ; Visible = .T. *--- tambahkan command button cmdMyEdit --- ADD OBJECT cmdMyEDIT AS COMMANDBUTTON WITH ; Name = "cmdEDIT", ; Caption = "Edit", ; FontName = "Arial", ; FontSize = 9, ; ForeColor = RGB(0,0,0), ; ToolTipText = "Ubah Data", ; Top = 215, ; Left = 170, ; Width = 60, ; Height = 25, ; Visible = .T. *--- tambahkan command button cmdMyDelete --- ADD OBJECT cmdMyDELETE AS COMMANDBUTTON WITH ; Name = "cmdDELETE", ; Caption = "Del", ; FontName = "Arial", ;

Page 68: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

144

FontSize = 9, ; ForeColor = RGB(0,0,0), ; ToolTipText = "Hapus Data", ; Top = 215, ; Left = 230, ; Width = 60, ; Height = 25, ; Visible = .T. *--- tambahkan command button cmdMyClose --- ADD OBJECT cmdMyCLOSE AS COMMANDBUTTON WITH ; Name = "cmdCLOSE", ; Caption = "CLOSE", ; CANCEL = .T., ; FontName = "Arial", ; FontSize = 9, ; ForeColor = RGB(0,0,0), ; ToolTipText = "Tutup Form", ; Top = 215, ; Left = 290, ; Width = 60, ; Height = 25, ; Visible = .T. ****************************** * definisi prosedur-prosedur * ****************************** *--- prosedur Timer --- PROCEDURE Waktu.Timer * label Jam diisi jam 00:00:00 ThisForm.Jam.Caption = TIME() ENDPROC *--- prosedur Init --- PROCEDURE Init && persiapan jika form akan diaktifkan * isi label Tanggal ThisForm.Tanggal.Caption = TampilkanTanggal() * mengatur grid WITH Thisform.grdGrid .ReadOnly = .T. && isi grid tidak bisa diubah .Column1.Width = 50 && lebar kolom 1 .Column2.Width = 260 && lebar kolom 2 .Column1.Header1.Caption = "KODE" .Column2.Header1.Caption = "NAMA CUCU" ENDWITH ENDPROC *--- prosedur Activate --- PROCEDURE Activate && jika form diaktifkan WITH ThisForm * aktifkan prosedur SetField() .SetField(.F.) * aktifkan prosedur TampilkanData() .TampilkanData() ENDWITH ENDPROC *--- prosedur grsGrid.AfterRowColChange --- PROCEDURE grdGrid.AfterRowColChange * parameter ini harus ada, tidak digunakan LPARAMETERS nColIndex * aktifkan prosedur TampilkanData() ThisForm.TampilkanData() ENDPROC *--- prosedur grdGrid.MouseMove --- PROCEDURE grdGrid.MouseMove && jika ada pergerakan mouse

Page 69: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

145

* Paramater ini harus ada LPARAMETERS nDirection, nShift, nXCoord, nYCoord ThisForm.grdGrid.DoScroll && aktifkan fungsi scroll ENDPROC *--- prosedur cmdFIRST.Click --- PROCEDURE cmdFIRST.Click && jika button First diklik ThisForm.NavigasiCucu("FIRST") ENDPROC *--- prosedur cmdPREV.Click --- PROCEDURE cmdPREV.Click && jika button Prev diklik ThisForm.NavigasiCucu("PREV") ENDPROC *--- prosedur cmdNEXT.Click --- PROCEDURE cmdNEXT.Click && jika button Next diklik ThisForm.NavigasiCucu("NEXT") ENDPROC *--- prosedur cmdLAST.Click --- PROCEDURE cmdLAST.Click && jika button Last diklik ThisForm.NavigasiCucu("LAST") ENDPROC *--- prosedur cmdADD.Click --- PROCEDURE cmdADD.Click && jika button Add diklik SELECT Cucu && aktifkan tabel Cucu.dbf * jika jumlah record sudah maksimal, maka: IF RECCOUNT() >= 1000 TampilkanRecordMax() && tampilkan pesan ELSE * mengatur form WITH ThisForm IF .cmdADD.Caption = "Add" && button "ADD" .SetButton(.F.) && aktifkan SetButton() .SetGrid(.F.) && aktifkan SetGrid() .SetField(.T.) && aktifkan SetField() .TampilkanField(.F.) && TampilkanField() .grdGrid.Refresh && grid direfresh .cmdADD.Enabled = .T. && cmdADD aktif .cmdEDIT.Enabled = .T. && cmdEDIT aktif .cmdADD.Caption = "Save" && cmdADD .cmdEDIT.Caption = "Cancel" && cmdEDIT .cmdADD.ToolTipText = "Simpan Data" .cmdEDIT.ToolTipText = "Batal" * kursor berada di field Kode .txtKodeCucu.SetFocus ELSE && jika judul button "SAVE" IF EMPTY(.txtKodeCucu.Value) * Tampilkan pesan TampilkanKodeKosong() * kursor berada di field Kode .txtKodeCucu.SetFocus ELSE nRecPos = RECNO() && record sekarang * cari Kode Cucu LOCATE FOR KdCucu = .txtKodeCucu.Value IF FOUND() && jika ditemukan, maka: * menuju posisi record sekarang GO nRecPos * Tampilkan pesan TampilkanKodeSama() * kursor berada di field Kode .txtKodeCucu.SetFocus ELSE && jika tidak ditemukan, maka:

Page 70: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

146

APPEND BLANK && tambahkan record .SimpanData() && SimpanData() .SetButton(.T.) && SetButton() .SetGrid(.T.) && SetGrid() .SetField(.F.) && SetField() .grdGrid.Refresh && direfresh .cmdADD.Caption = "Add" .cmdEDIT.Caption = "Edit" .cmdADD.ToolTipText="Tambah Data" .cmdEDIT.ToolTipText="Ubah Data" GO BOTTOM && menuju record akhir * aktifkan prosedur TampilkanData() .TampilkanData() ENDIF ENDIF ENDIF ENDWITH ENDIF ENDPROC *--- prosedur cmdEDIT.Click --- PROCEDURE cmdEDIT.Click && jika button cmdEDIT diklik SELECT Cucu && aktifkan tabel Cucu.dbf IF RECCOUNT() = 0 && jika file kosong, maka: * Tampilkan pesan TampilkanSorry("SORRY.....file kosong!") * aktifkan prosedur TampilkanData() ThisForm.TampilkanData() ELSE && jika file isi, maka: * mengatur form WITH ThisForm DO CASE CASE .cmdEDIT.Caption = "Edit" && "Edit" .SetButton(.F.) && aktifkan SetButton() .SetGrid(.F.) && aktifkan SetGrid() .SetField(.T.) && aktifkan SetField() * aktifkan prosedur TampilkanField() .TampilkanField(.T.) .grdGrid.Refresh && grid direfresh .cmdEDIT.Enabled = .T. && button aktif .cmdDELETE.Enabled = .T. && button aktif .cmdEDIT.Caption = "Save" && cmdEDIT .cmdDELETE.Caption = "Cancel" && cmdDELETE .cmdEDIT.ToolTipText = "Ubah Data" .cmdDELETE.ToolTipText = "Hapus Data" .txtKodeCucu.SetFocus CASE .cmdEDIT.Caption = "Save" && "Save" .SimpanData() .SetButton(.T.) && aktifkan SetButton() .SetGrid(.F.) && aktifkan SetGrid() .SetField(.T.) && aktifkan SetField() .grdGrid.Refresh && grid direfresh .cmdEDIT.Caption = "Edit" .cmdDELETE.Caption = "Del" .cmdEDIT.ToolTipText = "Ubah Data" .cmdDELETE.ToolTipText = "Hapus Data" * aktifkan prosedur TampilkanData() .TampilkanData() OTHERWISE && isi button "Cancel" .SetButton(.T.) && aktifkan SetButton() .SetGrid(.T.) && aktifkan SetGrid() .SetField(.F.) && aktifkan SetField()

Page 71: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

147

.grdGrid.Refresh && grid direfresh .cmdADD.Caption = "Add" .cmdEDIT.Caption = "Edit" .cmdDELETE.Caption = "Del" .cmdADD.ToolTipText = "Tambah Data" .cmdEDIT.ToolTipText = "Ubah Data" .cmdDELETE.ToolTipText = "Hapus Data" * aktifkan prosedur TampilkanData() .TampilkanData() ENDCASE ENDWITH ENDIF ENDPROC *--- prosedur cmdDELETE.Click --- PROCEDURE cmdDELETE.Click SELECT Cucu && aktifkan tabel Cucu IF RECCOUNT() = 0 && jika file kosong * Tampilkan pesan TampilkanSorry("SORRY.....file kosong!") * aktifkan prosedur TampilkanData() ThisForm.TampilkanData() ELSE * simpan posisi record sekarang xRecPosisi = RECNO() IF ThisForm.cmdDELETE.Caption = "Del" IF MESSAGEBOX("Anda ingin menghapus data ini?",; 4+32+256,"Konfirmasi") = 6 && pilih YES DELETE && hapus record PACK && pastikan record dihapus dari tabel * posisi record sekarang xRecPosisi=IIF(xRecPosisi >= RECCOUNT(),; RECCOUNT(),xRecPosisi) &&posisi record ENDIF ENDIF IF RECCOUNT() = 0 && jika file kosong * Tampilkan pesan TampilkanSorry("SORRY.....file kosong!") ELSE && jika file isi GO xRecPosisi && menuju record xrecPosisi ENDIF WITH ThisForm && mengatur _SCREEN .SetButton(.T.) && aktifkan SetButton() .SetGrid(.T.) && aktifkan SetGrid() .SetField(.F.) && aktifkan SetField() .GridRefresh() && aktifkan GridRefresh() .grdGrid.Refresh && grdGrid direfresh .cmdEDIT.Caption = "Edit" && button Edit .cmdDELETE.Caption = "Del" && button Delete .cmdEDIT.ToolTipText = "Ubah Data" && tips .cmdDELETE.ToolTipText = "Hapus Data" && tips .TampilkanData() && aktifkan TampilkanData() ENDWITH ENDIF ENDPROC *--- prosedur cmdCLOSE.Click --- PROCEDURE cmdCLOSE.Click && jika button cmdCLOSE diklik * variabel lokal LOCAL I,N,xUrut,xKode,xNama,yKode,yNama ******************************** * proses pengurutan BUBLE SORT * * berdasarkan Kode - Ascending *

Page 72: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

148

******************************** SELECT Cucu && aktifkan tabel Cucu N = RECCOUNT() && variabel jumlah record xUrut = .F. && variabel tanda (flag/switch) DO WHILE xUrut = .F. && lakukan selama belum urut xUrut = .T. && sudah urut FOR I = 1 TO (N-1) GO I && menuju record I xKode = Cucu.KdCucu && ambil nilai Kode xNama = Cucu.NmCucu && ambil nilai Nama GO (I+1) && menuju record (I+1) yKode = Cucu.KdCucu && ambil nilai Kode yNama = Cucu.NmCucu && ambil nilai Nama IF xKode > yKode && jika dipenuhi, maka: GO I && menuju record I REPLACE Cucu.KdCucu WITH yKode && yKode REPLACE Cucu.NmCucu WITH yNama && yNama GO (I+1) && menuju record (I+1) REPLACE Cucu.KdCucu WITH xKode && xKode REPLACE Cucu.NmCucu WITH xNama && xNama xUrut = .F. && belum urut ENDIF NEXT ENDDO thisform.grdGrid.RecordSource = "" && grid kosong thisform.release && form dihapus ENDPROC *--- prosedur GridRefresh --- PROCEDURE GridRefresh * mengatur Grid WITH ThisForm.grdGrid .ReadOnly = .T. && isi grid tidak bisa diubah .RecordSource = "Cucu" && tabel Cucu.dbf .RecordSourceType = 1 && alias tabel * lebar kolom .Column1.Width = 50 && lebar kolom 1 .Column2.Width = 260 && lebar kolom 2 * judul kolom .Column1.Header1.Caption = "KODE" .Column2.Header1.Caption = "NAMA CUCU" ENDWITH ENDPROC *--- prosedur SetButton --- PROCEDURE SetButton PARAMETERS xPar && menerima kiriman variabel * mengatur button (ON/OFF) WITH ThisForm .cmdFIRST.Enabled = xPar && cmdFirst ON/OFF .cmdPREV.Enabled = xPar && cmdPrev ON/OFF .cmdNEXT.Enabled = xPar && cmdNext ON/OFF .cmdLAST.Enabled = xPar && cmdLast ON/OFF .cmdADD.Enabled = xPar && cmdAdd ON/OFF .cmdEDIT.Enabled = xPar && cmdEdit ON/OFF .cmdDELETE.Enabled = xPar && cmdDel ON/OFF .cmdCLOSE.Enabled = xPar && cmdClose ON/OFF ENDWITH ENDPROC *--- prosedur SetField --- PROCEDURE SetField PARAMETERS xPar && menerima kiriman variabel * mengatur field

Page 73: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

149

WITH ThisForm .txtKodeCucu.Enabled = xPar && KodeCucu ON/OFF .txtNamaCucu.Enabled = xPar && NamaCucu ON/OFF ENDWITH ENDPROC *--- prosedur SetGrid --- PROCEDURE SetGrid PARAMETERS xPar && menerima kiriman variabel * mengatur grid True/False ThisForm.grdGrid.Enabled = xPar && grid ON/OFF ENDPROC *--- prosedur TampilkanData --- PROCEDURE TampilkanData IF RECCOUNT() = 0 && jika file kosong, maka: * tampilkan field kosong ThisForm.TampilkanField(.F.) ELSE * tampilkan field isi ThisForm.TampilkanField(.T.) ENDIF ThisForm.grdGrid.Refresh && grid di-refresh ENDPROC *--- prosedur TampilkanField --- PROCEDURE TampilkanField PARAMETERS xPar && menerima kiriman variabel SELECT Cucu && aktifkan tabel Cucu.dbf * mengatur form WITH ThisForm IF xPar = .T. && jika True, maka: .txtNoRec.Value =RECNO() && isi textbox .txtTotRec.Value=RECCOUNT() && isi textbox .txtKodeCucu.Value=Cucu.KdCucu && isi textbox .txtNamaCucu.Value=Cucu.NmCucu && isi textbox ELSE && jika False, maka: .txtNoRec.Value = RECCOUNT() && isi textbox .txtTotRec.Value = RECCOUNT() && isi textbox .txtKodeCucu.Value = "" && isi textbox kosong .txtNamaCucu.Value = "" && isi textbox kosong ENDIF ENDWITH ENDPROC *--- prosedur SimpanData --- PROCEDURE SimpanData SELECT Cucu && aktifkan tabel Cucu * simpan data ke dalam tabel Cucu.dbf REPLACE Cucu.KdCucu WITH ThisForm.txtKodeCucu.Value REPLACE Cucu.NmCucu WITH ThisForm.txtNamaCucu.Value FLUSH && pastikan data tersimpan ENDPROC *--- prosedur NavigasiCucu --- PROCEDURE NavigasiCucu PARAMETERS xPar && menerima kiriman variabel SELECT Cucu && aktifkan tabel Cucu.dbf IF RECCOUNT() = 0 && jika file kosong, maka: * Tampilkan pesan TampilkanSorry("SORRY.....file kosong!") ELSE && jika file isi, maka: DO CASE CASE xPar = "FIRST" * jika posisi di awal record IF RECNO() = 1

Page 74: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

150

TampilkanTopOfFile() && tampilkan pesan ELSE && jika tidak diposisi awal record GoRecord(xPar) && menuju awal record ENDIF CASE xPar = "PREV" * jika posisi di awal record IF RECNO() = 1 TampilkanTopOfFile() && tampilkan pesan ELSE && jika tidak diposisi awal record GoRecord(xPar) && menuju record sebelumnya ENDIF CASE xPar = "NEXT" * jika posisi di akhir record IF RECNO() = RECCOUNT() TampilkanEndOfFile() && tampilkan pesan ELSE && jika tidak diposisi akhir record GoRecord(xPar) && menuju record berikutnya ENDIF CASE xPar = "LAST" * jika posisi di akhir record IF RECNO() = RECCOUNT() TampilkanEndOfFile() && tampilkan pesan ELSE && jika tidak diposisi akhir record GoRecord(xPar) && menuju akhir record ENDIF ENDCASE * aktifkan prosedur TampilkanData() ThisForm.TampilkanData() ENDIF ENDPROC ENDDEFINE ********************************** * definisi prosedur di luar form * ********************************** *--- prosedur TampilkanSorry --- PROCEDURE TampilkanSorry PARAMETERS xPar && menerima kiriman variabel MESSAGEBOX(xPar,0+64,"SORRY") && tampilkan pesan ENDPROC *--- prosedur TampilkanFileKosong --- PROCEDURE TampilkanFileKosong * Tampilkan pesan TampilkanSorry("SORRY.....file kosong!") ENDPROC *--- prosedur TampilkanTopOfFile --- PROCEDURE TampilkanTopOfFile * Tampilkan pesan TampilkanSorry("SORRY.....top of file!") ENDPROC *--- prosedur TampilkanEndOfFile --- PROCEDURE TampilkanEndOfFile * Tampilkan pesan TampilkanSorry("SORRY.....end of file!") ENDPROC *--- prosedur TampilkanKodeKosong --- PROCEDURE TampilkanKodeKosong * Tampilkan pesan TampilkanSorry("SORRY.....Kode kosong!") ENDPROC *--- prosedur TampilkanKodeSama --- PROCEDURE TampilkanKodeSama

Page 75: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

151

* Tampilkan pesan TampilkanSorry("SORRY.....Kode sama!") ENDPROC *--- prosedur TampilkanRecordMax --- PROCEDURE TampilkanRecordMax * Tampilkan pesan TampilkanSorry("SORRY.....maksimum record 1.000!") ENDPROC *--- prosedur GoRecord --- PROCEDURE GoRecord PARAMETERS xPar && menerima kiriman variabel DO CASE CASE xPar = "FIRST" && button First GO TOP && menuju record awal CASE xPar = "PREV" && button Prev SKIP -1 && menuju record sebelumnya CASE xPar = "NEXT" && button Next SKIP && menuju record berikutnya CASE xPar = "LAST" && button Last GO BOTTOM && menuju record akhir OTHERWISE && button lainnya GO xRecPosisi && menuju record sekarang ENDCASE ENDPROC *--- prosedur TampilkanTanggal ---* FUNCTION TampilkanTanggal * variabel lokal LOCAL cRet,NamaHari(7),NamaPasar(5),NamaBulan(12) * Nama-nama hari NamaHari(1) = "Minggu" NamaHari(2) = "Senin" NamaHari(3) = "Selasa" NamaHari(4) = "Rabu" NamaHari(5) = "Kamis" NamaHari(6) = "Jum'at" NamaHari(7) = "Sabtu" * Nama-nama pasaran NamaPasar(1) = "Pahing" NamaPasar(2) = "Pon" NamaPasar(3) = "Wage" NamaPasar(4) = "Kliwon" NamaPasar(5) = "Legi" * Nama-nama bulan NamaBulan(1) = "Januari" NamaBulan(2) = "Februari" NamaBulan(3) = "Maret" NamaBulan(4) = "April" NamaBulan(5) = "Mei" NamaBulan(6) = "Juni" NamaBulan(7) = "Juli" NamaBulan(8) = "Agustus" NamaBulan(9) = "September" NamaBulan(10)= "Oktober" NamaBulan(11)= "Nopember" NamaBulan(12)= "Desember" * nama hari dan pasar, tanggal, bulan dan tahun cRet = NamaHari(DOW(DATE()))+" - "+ ; NamaPasar((MOD((DATE()-CTOD("01/01/1900")),5)+1))+ ; ", "+ALLTRIM(STR(DAY(DATE())))+" "+ ; NamaBulan(MONTH(DATE()))+" "+ ; STR(YEAR(DATE()),4)

Page 76: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

152

RETURN (cRet) && mengembalikan nilai tanggal sekarang ENDFUNC * End of procedure

Ketik program di atas, simpan dengan nama BapakAnak.prg atau copy file BapakAnak.prg dari CD pendamping buku ini, kemudian jalankan di dalam lingkungan Visual FoxPro. Hasilnya pasti me-muaskan!

Page 77: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

153

KOMPILASI PROGRAM Untuk menjalankan program-program di atas ada dua cara, yaitu:

1. Di dalam lingkungan Visual FoxPro:

Dari menu Visual FoxPro, pilih Program Do pilih <NamaProgram> OK

Contoh: Program Do pilih JamAnalog (file PRG) OK, atau;

Dari jendela Command, ketik: DO <NamaProgram>

Contoh: DO JamAnalog (file PRG)

2. Di luar lingkungan Visual FoxPro:

Jika Anda ingin menjalankannya di luar lingkungan Visual FoxPro, berarti Anda harus membuat file Executable (.EXE).

Page 78: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

154

Buat file project, caranya, pilih File New, akan tampil jendela New seperti berikut ini.

Gambar 8.1 Tampilan jendela New File

Pilih Project New file, akan tampil jendela seperti berikut ini.

Gambar 8.2 Tampilan jendela Create New File

New file

JamAnalog

Page 79: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

155

Ketik nama project, misalnya JamAnalog Save, akan muncul jendela Project Manager seperti gambar berikut ini.

Gambar 8.3 Tampilan jendela Project Manager

Pilih tab Code Add, pilih file PRG Anda (JamAnalog.prg) OK

Pilih Build, akan muncul jendela Build Options, pilih:

• Win32 executable/COM server (exe);

• Recompile All files;

• Display Errors, kemudian klik OK.

Gambar 8.4 Tampilan jendela Build Options

OK

Add

Code

Build

Page 80: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

156

Tunggu sebentar ….. Visual FoxPro sedang membuat file JamAnalog.exe.

Hasilnya file JamAnalog.exe siap digunakan dan didistribusikan!

Jangan lupa menyertakan file-file Run-Time. Daftar file Run-Time dapat dilihat dalam fasilitas Help

Visual FoxPro.

Page 81: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

157

PENUTUP Dunia pemrograman pada umumnya ‘hampir tanpa batas’, terbuka kesempatan bagi kita untuk mengembangkan ide dan kreativitas; yang membatasi hanya minat dan kemampuan kita untuk berkreasi. Seperti kata pepatah ‘to hear to forget, to see to remember, to do to understand’ (Confusius). Semakin sering kita melakukan latihan dan membuat program, kita akan semakin terampil dan pasti menjadi programmer yang andal dan profesional.

Meskipun penulis sudah mencoba menjelaskan materi dalam buku ini dengan jelas, namun penulis menyadari bahwa masih banyak kekurangan di sana-sini. Harapan penulis buku ini dapat menjadi inspirasi dan merupakan langkah awal untuk dapat meningkatkan pengetahuan dalam dunia pemrograman, khususnya Visual FoxPro.

Lima program yang dibahas dalam buku ini hanya contoh kecil dari kompleksitas dalam bidang pemrograman, tentunya masih perlu untuk dikembangkan lebih lanjut. Fasilitas HELP Visual FoxPro selalu siap membantu apabila Anda berada dalam kesulitan, Anda dapat

Page 82: Teknik Merancang Program Aplikasi (CODE) Pada Visual FoxPro

158

menggunakannya setiap saat dalam menyelesaikan masalah pemrograman di lingkungan Visual FoxPro.

Jika Anda masih mengalami kesulitan dalam mempelajari buku ini, Anda dapat berkonsultasi langsung dengan mengirimkan email ke alamat penulis berikut ini.

Email: [email protected]