Membuat Aplikasi GL dengan PowerBuilder 9.0 dan SQL Server 2000

1,271 views
1,176 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,271
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
118
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Membuat Aplikasi GL dengan PowerBuilder 9.0 dan SQL Server 2000

  1. 1. Spesifikasi: Ukuran: 14x21 cm Tebal: 416 hlm Harga: Rp 63.800 Terbit pertama: Desember 2004 Sinopsis singkat: Sistem Informasi Akuntansi - General Ledger dalam buku ini merupakan aplikasi siap pakai yang dibuatdengan bahasa pemrograman PowerBuilder dan database SQL Server 2000. Dengan hanya memasukkandata jurnal, semua laporan keuangan seperti rugi-laba, perubahan modal, dan neraca dapat dicetak kapansaja. Aplikasi ini juga dapat mencetak daftar perkiraan, jurnal, buku besar dan neraca saldo (percobaan). Buku ini memberikan penjelasan dan langkah-langkah praktis bagi Anda yang ingin mengetahui teknik pemrograman aplikasi General Legder dengan PowerBuilder 9.0 (teknik inherit) dan/atau database SQLServer 2000, dan juga bagi Anda yang hanya ingin memakai aplikasi General Ledger tanpa ingin mengetahui cara pembuatan database dan aplikasinya. Dilengkapi dengan CD berisi source code, aplikasi lengkap siap pakai, dan file-file pendukung sehingga memudahkan Anda mengikuti semua materi yang dibahas dalam buku.
  2. 2. Bab 7 WindowWindow adalah penghubung utama antara pemakai dengan aplikasiPowerBuilder. Window dapat menampilkan informasi, menerimamasukan informasi dari pemakai, dan merespons mouse ataukeyboard yang digerakkan.Window adalah obyek terpisah dengan obyek lainnya yang Anda buatdengan painter Window. Pada PowerBuilder, Anda dapat membuatwindow kapan saja selama proses pengembangan aplikasi.7.1 Tipe WindowTipe window penting dalam membuat suatu window karena masing-masing tipe window mempunyai fungsi yang berbeda danPowerBuilder akan mengeset atribut window tersebut sesuai dengantipe yang ditentukan. Untuk memilih tipe window, pilih salah satutipe window yang terdapat dalam dropdown tipe window. Tipewindow akan menetapkan hubungan dengan window lain dalamaplikasi.MainWindow main biasanya digunakan sebagai sheet dalam aplikasi.Window main bisa saja berfungsi sebagai induk (parent window) dariwindow child, popup, atau response.Window main biasanya berisi sebuah menu dan/atau sebuah set darisatu CommandButton atau lebih untuk menyajikan pilihan padapemakai. Tipe window ini dapat diperkecil atau diperbesar. SaatAnda melakukan hal ini, window ini akan secara otomatis 155
  3. 3. mengesetnya dengan ukuran yang relatif terhadap layar dan bukanterhadap window lain.PopUpWindow Popup adalah sebuah tipe window yang dapat digunakansebagai window mengapung dan dapat ditampilkan di luar windowparent. Window popup sering digunakan untuk menyediakaninformasi tambahan atau detail yang besar dari sebuah obyek dalamsebuah window induk.ChildWindow Child adalah sebuah window anak yang terikat dengansebuah window induk. Artinya, sebuah window child harusdihubungkan dengan sebuah window induk (parent window) danhanya dapat ditempatkan dalam window induk dan tidak dapatditarik (ditempatkan) keluar window induk.ResponseWindow Response adalah sebuah kotak dialog yang menerimainformasi dari pemakai. Window response yang ditampilkanmerupakan window aktif. Tidak ada window lain dalam aplikasi yangdapat diakses sampai ada respons dari pemakai. Pemakai dapatberalih ke window aplikasi yang lain, tetapi ketika pemakai kembalike aplikasi, window response tetap aktif.Sebuah window response sama seperti window popup, bedanyawindow popup tidak membutuhkan respons pemakai, sedangkanwindow response membutuhkan respons pemakai. Window responsadalah application modal, yaitu window yang memerlukan responssebelum melanjutkan aplikasi. Saat aplikasi membuka windowresponse, pemakai tidak dapat berpindah ke window yang lain(dalam aplikasi yang sama) sebelum menutup window responsetersebut. Window response selalu menampilkan sebuah pesan danbiasanya ada satu atau lebih CommandButton yang harusdilaksanakan pemakai. Window ini juga sering digunakan untukmenampilkan pesan error atau tampilan keputusan sebelum prosesdilanjutkan. Window ini tidak bisa menggunakan menu, tidak dapatdiperkecil (minimize) atau diperbesar (maximize), dan tidak dapatdigulung. Anda hanya dapat memindahkan atau menutupnya.Gambar 7.7 adalah salah satu contoh window response.156
  4. 4. MDI FrameWindow MDI (Multiple Document Interface) adalah salah satu tipeWindows yang penting Anda ketahui. Banyak aplikasi Windowsterkenal menggunakan bentuk tampilan aplikasi MDI ini. MicrosoftWord for Windows, Microsoft Excel, dan PowerBuilder adalah contohaplikasi MDI. Window MDI merupakan salah satu bentuk tampilandari window induk. Istilah lain dari window MDI adalah MDI Frameyang berisi satu atau lebih window anak sebagai sheet—window yangmerupakan lembaran kerja untuk menampilkan data, baik sebagaiinput (lembaran kerja) maupun output (preview laporan). DalamMircrosoft Word for Windows, window anak merupakan macam-macam dokumen yang dapat diedit. Pada Excel, masing-masingwindow anak ini disajikan dalam bentuk lembaran kerja(spreadsheet).Window MDI dapat juga berisi toolbar dan Microhelp (gunakan tipewindow MDI Frame with Microhelp).MDI Frame with MicrohelpPilihan lain dari tipe window adalah MDI Frame with Microhelp.Pada window MDI Frame with Microhelp ini disediakan fasilitas untukmenampilkan keterangan pendek pada baris status aplikasi.Keterangan ini digunakan untuk membantu pemakai dalampemilihan menu dan icon menu. Hal ini akan dibahas pada bagianpembuatan window utama dalam bab ini.7.2 Window PembukaWindow pembuka adalah window yang dibuka pertama kali padasaat aplikasi dijalankan. Window ini biasa menampilkan gambar yangaktraktif agar aplikasi yang dibuat lebih menarik. Gambar ini dapatAnda rancang sendiri sedemikian rupa sesuai keinginan Anda.Sebagai contoh, penulis mengikutsertakan rancangan gambar yangdisisipkan ke dalam dokumen MS Word (slide_pembuka.doc),kemudian ditangkap (capture) dan disimpan dengan format filegambar yang dapat digunakan pada PowerBuilder (bmp, gif, jpg,atau format gambar lainnya).Langkah-langkah untuk membuat window pembuka adalah sebagaiberikut: 157
  5. 5. 1. Klik icon New pada PowerBar.2. Klik tab PB Object.3. Klik Window.4. Atur ukuran window sesuai dengan keinginan Anda.5. Klik icon Picture pada dropdown kontrol.6. Klik area di pojok kiri atas window.7. Klik kanan mouse kemudian pilih Properties.8. Klik tombol select pada PictureName.9. Klik drop down File of type:.10. Pilih tipe file gambar yang akan disisipkan, pada contoh ini adalah bmp karena tampilan gambar bmp jauh lebih bagus dari pada file gambar gif dan jpg.11. Pilih file slide_pembuka, kemudian atur tampilan gambar sesuai ukuran tampilan window.12. Klik tab Declare Instance Variable, kemudian ketikkan variabel di bawah ini: int ii_detik13. Klik tab Event list, klik event open, kemudian ketikkan skrip di bawah ini: f_center_w( this ) //Center window timer(3) //delay 3 detik14. Klik icon Save, klik file mylibrary.pbl, ketikkan w_pembuka, kemudian klik OK.7.3 Window LoginAplikasi PowerBuilder merupakan aplikasi yang mempunyaikemampuan yang hebat dalam menangani database dan sangatmemperhatikan keamanan aplikasi dan database yang digunakan.Kode aslinya hanya dapat dibaca oleh PowerBuilder sendiri, begitupula database aslinya yang telah diberi user id dan password. Hal inidilakukan untuk keamanan agar database tidak dapat diakses olehorang-orang yang tidak berhak. Selain itu, PowerBuilder158
  6. 6. memberikan fasilitas window response agar pemakai menjalankanwindow ini dan memasukkan user id dan password sebelummemasuki aplikasi.Window Login adalah suatu window yang digunakan pemakai untukmemasukkan user id dan password sebelum masuk ke dalamaplikasi.7.3.1 Pembuatan WindowSelain dari window login itu sendiri, ada beberapa obyek dan kontrolyang harus Anda buat saat pembuatan window login.Membuat Window LoginUntuk pembuatan window login, ikuti langkah-langkah di bawah ini:1. Klik icon New pada PowerBar.2. Klik tab PB Object.3. Klik Window.4. Ubah ukuran window. Pindahkan pointer mouse ke pojok kanan bawah window sampai tanda anak panah dengan arah ke pojok kiri atas dan ke kanan bawah terlihat. Tahan dan dorong mouse ke arah pojok kiri atas untuk memperkecil window atau dorong mouse ke arah pojok kanan bawah untuk memperbesar window. Cara seperti ini digunakan untuk mengubah ukuran window secara proporsional (sebanding dengan window aslinya). Anda dapat juga mengubah ukuran window secara tidak proporsional dengan memindahkan pointer mouse pada sisi kanan untuk memperbesar/memperkecil ke arah kanan/kiri dan pada posisi bawah untuk memperbesar/memperkecil ke arah bawah/atas.5. Klik tab General pada tab Properties.6. Ketikkan Login dalam kotak Title.7. Hilangkan tanda centang pada kotak cek ControlMenu.8. Pilih Response! dalam dropdown Window Type.9. Klik tab Other dan ketikkan posisi dan ukuran window seperti pada Gambar 7.1. 159
  7. 7. Gambar 7.1 Kotak dialog posisi dan ukuran windowMenambah Kontrol Gambar Bar PutihKontrol gambar bar ini digunakan sebagai bar tempat kontrolgambar logo perusahaan dan kontrol teks nama aplikasi yang akanditampilkan. Langkah–langkah untuk membuat kontrol ini adalahsebagai berikut:1. Klik icon Picture dalam PainterBar1 atau klik dropdown kontrol untuk menampilkan icon kontrol yang ada, kemudian klik icon Create Picture control.2. Klik mouse di mana kontrol Picture ini ditempatkan, maka akan terbentuk kontrol gambar dengan nama p_1.Kontrol Picture akan ditampilkan pada lokasi yang dipilih atau dimana mouse diklik. Kontrol ini dapat dipindahkan atau dihapus.Untuk memindahkannya, pointer (tanda tambah) berada padakontrol, klik kiri mouse dan tahan, pindahkan mouse ke lokasi yangdiinginkan dan lepaskan mouse. Untuk menghapus kontrol, klikkontrol ini dan tekan tombol Delete.Untuk menambahkan kontrol gambar, ikuti langkah-langkah berikut:1. Klik dropdown PictureName pada tab General.2. Pilih nama gambar yang diinginkan.160
  8. 8. Dropd down kontrol Gambar 7.2 Dropdown kontrol Anda juga dapat memilih nama file gambar yang dibuat sendiri. Sebagai contoh, penulis menggunakan file gambar bar dari salah satu clipart galery yang telah ditambahi bar warna putih di bagian atas gambar bar aslinya. Cara menambahkan warna putih adalah dengan menyisipkan file gambar bar pada lembaran kerja Microsoft Word, kemudian menangkap (capture) gambar tersebut mulai dari sisi bawah ke atas sehingga warna putih lembaran kerja Microsoft Word tertangkap, lalu simpan dengan nama barputih.bmp. Kotak empat persegi panjang pada Gambar 7.3 menunjukkan area yang ditangkap pada lembaran kerja Microsoft Word pada pembuatan bar putih. Gambar 7.3 Pembuatan bar puntih3. Tarik kontrol p_1 ke kanan sehingga tampilan gambar menjadi seperti Gambar 7.4.Menambah Kontrol Gambar Logo PerusahaanKontrol gambar ini digunakan sebagai tempat gambar logoperusahaan yang akan ditampilkan. Langkah–langkah untuk membuatkontrol ini adalah sebagai berikut: 161
  9. 9. 1. Klik icon Picture dalam PainterBar1 atau klik dropdown kontrol untuk menampilkan icon kontrol, kemudian klik icon Create Picture control.2. Klik mouse di atas bagian pojok kiri atas kontrol gambar p_1 (bertumpuk dengan kontrol p_1), maka kontrol p_2 akan terbentuk.3. Klik dropdown PictureName pada tab General.4. Pilih nama gambar yang diinginkan.5. Anda juga dapat memilih nama file gambar yang dibuat sendiri. Sebagai contoh, penulis menggunakan file power-it.jpg.6. Atur ukuran tampilan gambar logo perusahaan.Menambahkan Kontrol Teks AplikasiKontrol teks aplikasi adalah kontrol teks statis yang digunakansebagai tempat teks yang akan menampilkan nama aplikasi disebelah kanan kontrol p_2. Untuk menambahkan kontrol teks statis,ikuti langkah-langkah dibawah ini:1. Klik icon Static Text (icon huruf A) dalam PainterBar1 atau klik dropdown kontrol untuk menampilkan icon kontrol, kemudian klik icon Create Static Text control.2. Klik area di sebelah kanan kontrol p_2, maka akan terbentuk kontrol st_1.3. Kontrol teks statis akan tampil pada lokasi. Kotak hitam kecil pada setiap sudut menandakan bahwa kontrol ini yang dipilih.Menambahkan Kontrol Teks UserId dan PasswordKontrol teks userid dan pasword digunakan sebagai tempat teks“User ID:” dan “Password”. Untuk menambahkan kontrol teks ini,ikuti langkah-langkah dibawah ini:1. Klik icon Static Text (icon huruf A) dalam PainterBar1 atau klik dropdown kontrol untuk menampilkan icon kontrol, kemudian klik icon Create Static Text control.2. Klik area di bawah kontrol p_1, maka akan terbentuk kontrol st_2.3. Klik kanan mouse pada kotrol teks statis dan pilih Duplicate.162
  10. 10. 4. PowerBuilder akan membuat sebuah duplikat dari kontrol yang dipilh tadi.Mengatur Properti Kontrol Teks StatisKontrol teks statis yang dibuat telah dapat diisi dengan teks yangdiinginkan dan dapat diatur propertinya seperti ukuran huruf, namahuruf, tebal, dan sebagainya.Untuk mengatur properti kontrol teks statis, ikuti langkah-langkah dibawah ini:1. Klik kontrol teks statis yang pertama.2. Klik tab General.3. Pilih teks st_1 dalam kotak Name. Ketikkan st_aplikasi dalam kotak Name. Ganti teks none dalam kotak Text dan ketikkan General Ledger. Anda telah membuat satu teks statis dan memberinya awalan nama st sebagai standar kontrol teks statis.4. Klik tab Font dan ubah ukurah huruf menjadi 16 point.5. Sesuaikan ukuran huruf kontrol teks statis yang pantas. Tempatkan mouse pada sudut atas kanan kontrol teks, klik dan tahan, lalu dorong mouse ke arah kanan dan lepaskan mouse. Periksa apakah semua teks yang diketikkan sudah tampil dalam kontrol atau belum. Jika perlu, sesuaikan ukuran kontrol sampai semua teks yang diketikkan kelihatan.6. Sesuaikan lokasi kontrol dengan ruangan yang ada.7. Klik kontrol teks yang kedua.8. Klik tab General.9. Pilih teks st_2 dalam kotak Name.10. Hapus teks none dalam kotak Text dan ketikkan User ID:.Lakukan juga untuk st_3 dengan nama dengan nama st_passworddan teks Password:. 163
  11. 11. st_aplikasi st_userid st_password p_1 p_2 Gambar 7.4 Tampilan sementara window loginKontrol SingleLineEditKontrol ini digunakan sebagai tempat input atau untuk menampilkanteks. Teks ini dapat diubah-ubah oleh pemakai.Anda dapat membuat dua buah kontrol SingleLineEdit, yaitu untukinput User ID dan Password. Untuk melakukan hal ini, ikuti langkah-langkah dibawah ini:1. Klik icon SingleLineEdit pada dropdown kontrol.2. Klik mouse di sebelah kanan teks statis User ID:. Sebuah kontrol SingleLineEdit tampil pada lokasi yang dipilih tadi. Kotak hitam pada setiap sudut menandakan bahwa kontrol ini yang dipilih.3. Klik kanan mouse pada kontrol SingleLineEdit dan pilih Duplicate. PowerBuilder akan membuat sebuah duplikat dari kontrol yang dipilih tadi.4. Sesuaikan posisi kontrol SingleLineEdit dengan posisi kontrol teks statis.5. Atur ukuran kontrol SingleLineEdit seperti mengubah ukuran kontrol teks statis.164
  12. 12. Mengatur Properti Kontrol SingleLineEditUntuk mengatur properti SingleLineEdit, ikuti langkah-langkah dibawah ini:1. Klik kontrol SingleLineEdit yang pertama.2. Pilih teks sle_1 dalam kotak Name.3. Klik tab General: Ganti teks sle_1 dalam kotak Name dengan sle_userid. Klik kotak Password sehingga muncul tanda centang untuk menampilkan tanda bintang saat pengetikan. Ketikkan 10 dalam kotak Limit.4. Pilih teks sle_2 dalam kotak Name. Ketikkan sle_password dalam kotak Name. Klik kotak Password sehingga muncul tanda centang untuk menampilkan tanda bintang saat pengetikan. Ketikkan 10 dalam kotak Limit.Kontrol CommandButtonCommandButton atau icon tombol merupakan kontrol yangdigunakan sebagai media penghubung pemakai dengan program.Penekanan CommandButton akan menyebabkan dijalankannya suatutugas berdasarkan kondisi saat itu. Pengaksesan kontrol ini, sepertimengklik mouse pada kontrol ini, menyebabkan terjadinyaperubahan gambar seolah-olah sebuah tombol ditekan dandilepaskan.Untuk membuat kontrol CommandButton, caranya adalah sebagaiberikut:1. Klik icon CommandButton pada dropdown kontrol.2. Klik mouse di sebelah kanan SingleLineEdit pertama. Sebuah kontrol CommandButton tampil pada lokasi yang dipilih.3. Klik kanan mouse pada kontrol CommandButton dan pilih Duplicate. PowerBuilder akan membuat sebuah duplikat dari kontrol yang dipilih. 165
  13. 13. 4. Sesuaikan posisi kontrol CommandButton dengan posisi kontrol SingleLineEdit. Atur ukuran kontrol CommandButton seperti mengubah ukuran kontrol teks statis.Mengatur Properti Kontrol CommandButtonUntuk mengatur properti CommandButton, lakukan langkah-langkahberikut:1. Pilih kontrol CommandButton pertama yang telah Anda buat.2. Klik tab General.3. Pilih teks cb_1 dalam kotak Name. Ketikkan cb_login dalam kotak Name. Hapus teks none dalam kotak Text dan ketikkan Login. Klik kotak cek Default. Anda telah membuat satu CommandButton dan memberinya nama. Awalan cb adalah standar kontrol CommandButton.4. Pilih kontrol CommandButton yang kedua yang telah Anda buat.5. Pilih teks cb_2 dalam kotak Name: Ketikkan cb_batal dalam kotak Name Hapus teks none dalam kotak Text dan ketikkan Batal.Merapikan Tampilan KontrolJika Anda memperhatikan posisi tampilan dari beberapa kontrolyang telah Anda buat pada window Login, ada yang terlalukekiri/kanan, ke atas/bawah atau beberapa kontrol yang seharusnyamempunyai panjang sama tapi tidak sama. Untuk memperindahtampilan kontrol-kontrol ini PowerBuilder menyediakan fasilitasberupa menu dan toolbar seperti pada Gambar 7.5.Untuk mempercantik tampilan kontrol-kontrol pada window login,ikuti langkah-langkah di bawah ini:1. Tekan tombol Ctrl dan tahan.2. Klik kontrol teks st_userid.3. Klik kontrol teks st_password.4. Lepas tombol Ctrl.166
  14. 14. 5. Tampilan kontrol akan ditandai dengan titik empat bujur sangkar di masing-masing pojok empat persegi panjang kontrol.6. Klik dropdown icon untuk memilih jenis pengaturan (perhatikan Gambar 7.5). Icon aktif Droo down icon Rata kiri Rata kanan Center Vertikal Center horizontal Rata atas Rata bawah Jarak horizontal Jarak vertikal Ukuran lebar Ukuran tinggi Ukuran sama besar Gambar 7.5 Toolbar untuk mempercantik tampilan kontrol7. Klik icon Rata kiri (Align left edges). Setelah Anda mengklik icon rata kiri maka kontrol akan diratakan ke kiri sejajar dengan kontrol yang pertama kali diklik, yaitu kontrol st_password akan diratakan sejajar dengan kontrol st_userid. Hal ini dapat dilakukan dengan lebih dari satu kontrol sekaligus diratakan sesuai dengan jumlah kontrol yang dipilih. Pengaturan seperti ini juga berlaku nantinya pada pengaturan kontrol pada DataWindow.8. Klik kontrol st_userid dan kontrol sle_userid, kemudian lepas tombol Ctrl.9. Pilih icon ukuran tinggi (Size width) untuk menyamakan tinggi kontrol sle_userid dengan kontrol st_userid dan selanjutnya pilih icon Rata atas.10. Bebaskan semua kontrol yang dipilih dengan mengklik area window yang kosong.11. Tekan tombol Ctrl dan tahan.12. Klik kontrol sle_useid, kemudian lepas tombol Ctrl. 167
  15. 15. 13. Tekan tombol Shift dan tahan.14. Tekan tombol anak panah kanan untuk menambah ukuran lebar kontrol sle_userid agar dapat menampung kira-kira 10 karakter. Hal ini dapat juga Anda lakukan dengan cara menempatkan kursor mouse di sisi sebelah kanan kontrol sehingga kursor mouse berubah menjadi tanda anak panah kiri kanan. Tahan mouse pada posisi ini dan dorong ke kanan untuk melebarkan, atau ke kiri untuk memperpendek kontrol.15. Bebaskan semua kontrol yang dipilih dengan mengklik area window yang kosong.16. Tekan tombol Ctrl dan tahan.17. Klik kontrol sle_userid dan kontrol sle_password, kemudian lepas tombol Ctrl.18. Pilih icon rata kiri (Align left edges) untuk menempatkan kontrol sle_password sejajar ke kiri dengan kontrol sle_userid.19. Klik icon ukuran lebar dan tinggi (Size widths and heights) untuk menyamakan lebar/tinggi kontrol sle_password dengan lebar/tinggi kontrol sle_userid.20. Bebaskan semua kontrol yang dipilih dengan mengklik area window yang kosong.21. Selanjutnya, samakan panjang kontrol cb_login dengan cb_batal dan samakan tinggi kedua kontrol ini dengan kontrol sle_userid.Menyimpan WindowSetiap kali Anda keluar dari painter window, PowerBuilder akanmenanyakan apakah window yang telah dibuat akan disimpan (Yes),tidak (No), atau tetap berada pada layar desain untuk melanjutkanpekerjaan (Cancel). Pilih salah satu pilihan yang diinginkan.Untuk meyimpan window baru, caranya adalah sebagai berikut:1. Pilih File dari menu bar atau klik icon Save, maka akan tampil kotak dialog penyimpanan window.2. Anda dapat juga memilih Save As. Untuk window baru, Save dan Save As adalah sama kecuali apabila Anda ingin menyimpannya dengan nama lain.168
  16. 16. 3. Pilih nama file pustaka tempat window disimpan, misalnya disimpan dalam file pustaka mylibrary.pbl.4. Ketikkan nama window yang diinginkan, misalnya w_login.5. Awalan w_ adalah standar untuk penamaan windows.6. Ketikkan keterangan dalam kotak Comments, misalnya Window masuk aplikasi bilamana diperlukan (opsional).7. Klik OK.Melihat Tampilan WindowTampilan window yang telah didesain dapat dilihat dengan perintahPreview. Namun sebelum Anda melakukan preview window login,berikanlah kembali tanda centang pada kotak cek ControlMenu (kliktab General, kemudian klik kotak cek ControlMenu). Hal inidilakukan agar setelah melakukan preview Anda dapat kembali kelayar desain. Jika hal tidak dilakukan maka Anda tidak akan dapatkembali ke layar desain karena saat preview dilakukan PowerBuildertidak menampilkan menu atau icon Close sehingga Anda harusmenutup (Close) PowerBuilder.Untuk melakukan preview pilih menu Design | Preview dari menubar atau klik icon Preview pada PainterBar.Window yang telah didesain akan tampil dan Anda dapat mencobamengetikkan pada kontrol sle_userid atau sle_password yangberwarna putih seperti pada Gambar 7.6.Jika hasil tampilan window yang Anda buat perlu diperbaiki, Andadapat kembali ke layar desain dengan mengklik Close window padapojok kanan atas. Gambar 7.6 Tampilan preview window login 169
  17. 17. Apabila tampilan window telah sesuai dengan tampilan yang Andainginkan, hilangkan kembali tanda centang pada kotak cekControlMenu, kemudian simpan window.Menutup WindowPenutupan window dapat Anda lakukan dengan memilih menu File |Close atau dengan mengklik icon Close.Membuka WindowWindow yang telah disimpan dapat dibuka kembali untuk diubahatau hanya sekedar untuk menampilkannya saja. Pada window yangtelah dibuka, Anda dapat memilih menu File | Recent Objects. Kliknama window tersebut untuk mengaktifkannya. Untuk membukawindow, ikuti langkah-langkah di bawah ini:1. Klik icon Open.2. Klik Window pada dropdown Objects of Type.3. Klik nama file pustaka tempat window disimpan, misalnya mylibrary.pbl.4. Klik nama window yang akan dibuka, misalnya w_login.5. Klik OK.7.3.2 Skrip Window LoginSkrip adalah kode program dalam bahasa PowerBuilder yang akanmelakukan suatu pekerjaan saat suatu kejadian berlangsung. Apakahprogram perlu memeriksa karakter yang diketikkan oleh pemakaisaat mengetikkan user id dan password program? Jika hal inidiperlukan maka Anda harus mengetikkan skrip untuk memeriksakarakter yang diketikkan pemakai tersebut.Skrip SingleLineEditKontrol SingleLineEdit yang telah dibuat untuk memasukkan User Iddan Password mendukung suatu kejadian (event) jika telah terjadiperubahan (modified) isi kontrol. Dengan adanya kejadian ini makakita dapat melakukan tindakan-tindakan terhadap kejadian ini.Kejadian ini disebut dengan kejadian Modified. Skrip yang digunakansebagai respons dari kejadian ini diketikkan dalam kejadian ini.170
  18. 18. Sebagai contoh, Anda dapat memeriksa karakter yang dimasukkanoleh pemakai, misalnya hanya mengizinkan huruf atau angka saja.Jika string yang diketikkan oleh pemakai tidak sah maka tampilkanpesan Ketikkan huruf atau angka!. Untuk melakukan hal inidiperlukan tiga buah fungsi, yaitu Isnull(), Match(), danMessagebox().Untuk membuat skrip kontrol SingleLineEdit, ikuti langkah-langkahdi bawah ini:1. Buka Window w_login.2. Klik kanan kontrol sle_userid untuk menampilkan menu pop-up.3. Klik menu Script pada menu pop-up.4. Deklarasikan variable instance (klik tab Declare Instance Variable) untuk menampung string user id dan password serta jumlah pengulangan kesalahan. int ii_looping //pengulangan kesalahan string is_userid,is_password Klik tab event Modified, kemudian ketikkan skrip di bawah ini: //Mengambil string user id pada kontrol sle_userid is_userid =5. Tempatkan kursor di belakang tanda sama dengan.6. Klik icon Browse Object pada PainterBar.7. Klik tab Window.8. Klik ganda window w_login.9. Klik ganda sle_userid.10. Klik ganda icon Properties (perhatikan Gambar 7.7).11. Klik dropdown pada list sebelah kanan (perhatikan Gambar 7.7).12. Klik kanan mouse properties string text, kemudian klik Copy.13. Klik Close untuk menutup window Browser Obyek.14. Tekan tombol Ctrl+V untuk mem-paste obyek. PowerBuilder akan menyalin atau menyisipkan properti obyek w_login.sle_userid.text di belakang tanda sama dengan. Hilangkan teks w_login, nama obyek window tidak diperlukan krena skrip berada pada obyek aktif, yaitu sle_userid. 171
  19. 19. Selain cara di atas, Anda juga dapat mengetikkan langsung properti obyek ini pada skrip.15. Ketikkan skrip di bawah ini: if isnull(is_userid) or len(is_userid) = 0 then return Skrip di atas digunakan untuk memeriksa apakah variabel ls_userid tidak berisi (null) atau panjang isi variabel ls_string sama dengan nol. Jika salah satu dari kondisi ini dipenuhi maka pemakai harus memasukkan ulang user id.16. Ketikkan tiga baris skrip di bawah ini: if match ( is_userid , "^[A-Za-z0-9]+$" ) = false then messagebox("Perhatian","Ketikkan huruf atau angka !") end if Skrip di atas digunakan untuk memeriksa apakah isi variabel ls_userid tidak sesuai (not matching) dengan A hingga Z, a hingga z, atau 0 hingga 9. Jika kondisi ini dipenuhi maka tampilkan pesan dan pemakai harus memasukkan user id kembali.17. Klik icon Compile pada PowerBar2 atau pilih menu Edit | Compile. PowerBuilder akan mengompilasi skrip yang telah Anda ketikkan. Jika tejadi error saat kompilasi berlangsung, window error akan terbuka di layar bagian bawah. Hal ini terjadi karena pengetikan skrip yang salah. Betulkan skrip yang salah ketik dan klik kembali icon Compile. Skrip event modified sle_userid selengkapnya adalah seperti di bawah ini: //Mengambil string user id pada kontrol sle_userid is_userid = sle_userid.text if isnull(is_userid) or len(is_userid) = 0 then return if match ( is_userid , "^[A-Za-z0-9]+$" ) = false then messagebox("Perhatian","Ketikkan huruf atau angka !") end if172
  20. 20. Gambar 7.7 Window untuk menyisipkan properti obyek ke dalam skripSetelah Anda melakukan langkah-langkah di atas, ulangi untukmemberikan skrip kontrol sle_password. Skrip sle_passwordselengkapnya adalah sebagai berikut://Mengambil string password pada kontrol sle_passwordis_password = sle_password.textif isnull(is_password) or len(is_password) = 0 then returnif match ( is_password , "^[A-Za-z0-9]+$" ) = false then messagebox("Perhatian","Isi dengan huruf atau angka !") returnend ifcb_login.setfocus()Skrip CommandButton LoginSkrip CommandButton login digunakan melakukan koneksi dengandatabase dan masuk ke dalam aplikasi. Untuk membuat skripCommandButton login ikuti langkah-langkah di bawah ini:1. Pastikan tampilan window login seperti pada pembuatan skrip kontrol SingleLineEdit, yaitu window login dalam keadaan aktif/terbuka. Jika window login tidak aktif, Anda harus terlebih dahulu membukanya.2. Klik kanan mouse pada kontrol CommandButton cb_login untuk menampilkan menu pop-up.3. Pilih menu Script dari menu pop-up.4. Ketikkan skrip di bawah ini: // Profile SQLCA.DBMS = "MSS Microsoft SQL Server" 173
  21. 21. SQLCA.Database = profilestring("gl.ini","DATABASE",& "Database","") SQLCA.ServerName = profilestring("gl.ini","DATABASE",& "ServerName","") SQLCA.LogId = is_userid SQLCA.LogPass = is_password SQLCA.AutoCommit = True gs_logo = rofilestring("gl.ini","COMPANY",& "logo","") gs_perusahaan = profilestring("gl.ini","COMPANY",& "name","") gs_motto = profilestring("gl.ini","COMPANY",& "motto","") connect using sqlca; if sqlca.sqlcode <> 0 then ii_looping++ MessageBox ("Koneksi Database Gagal", sqlca.sqlerrtext) if ii_looping = 3 then //Pemakai sudah tiga kali memasukkan user id dan //pasword yang salah Close ( parent ) return end if return end if Close ( parent ) open ( w_utama ) //Masuk ke dalam aplikasi dengan membuka window utama open ( w_utama )Skrip CommandButton BatalSkrip CommandButton batal digunakan untuk membatalkan login keaplikasi atau menutup window login dan kemabali ke sistem operasi.Untuk membuat skrip CommandButton Batal, ikuti langkah-langkahdi bawah ini:1. Pastikan tampilan window login seperti pada pembuatan skrip kontrol cb_login.2. Klik kanan mouse pada kontrol cb_batal untuk menampilkan menu pop-up.3. Pilih menu Script dari menu pop-up.174
  22. 22. 4. Ketikkan satu baris skrip di bawah ini untuk menutup window login. Halt5. Klik icon Save untuk menyimpan perubahan.Skrip Event Open window loginSkrip event Open pada window login fungsinya untuk menempatkanposisi window di tengah-tengah layar dan memutuskan koneksidatabase jika ada database yang aktif.Untuk membuat skrip event Open window login, ikuti langkah-langkah di bawah ini:1. Pastikan tampilan window login seperti pada pembuatan skrip kontrol CommandButton Login.2. Klik tab Layout.3. Klik kanan mouse pada area window untuk menampilkan menu pop-up.4. Pilih menu Script dari menu pop-up.5. Klik dropdown event dan pilih Open.6. Ketikkan satu baris skrip di bawah ini untuk menutup window login. f_center_w( this ) disconnect ;Penjelasan Perintah dan FungsiBerikut ini adalah penjelasan penggunaan fungsi pada skrip windowlogin.Isnull()Sintaks:Isnull(exp)Keterangan:Exp adalah sebuah ekpresi dapat berupa variabel atau nilai. 175
  23. 23. Len()Sintaks:Len(exp)Keterangan:Exp adalah sebuah ekpresi string atau blob yang ingin Anda ketahuipanjangnya.Match()Sintaks: Match(string1, string2)Keterangan:string1 adalah string yang akan diperiksastring2 adalah string pembanding atau string1 sah bila merupakanbagian dari string2.MessageBox()Sintaks:MessageBox ( judul, teks {, icon {, button {, default } } } )Keterangan:judul adalah string judul (title) kotak pesan.teks adalah string pesan yang akan ditampilkan.icon adalah sebuah icon berupa nilai dengan tipe data enumeratedyang ingin Anda tampilankan di sisi kiri kotak pesan. Adapun nilaiyang dapat Anda isi yaitu: Information! (default, tanda huruf i) StopSign! (tanda silang X) Exclamation! (tanda seru !) Question! (Tanda tanya ?) None! (tanpa tanda)176
  24. 24. button adalah sebuah tombol (CommandButton) berupa nilai dengantipe data enumerated. Nilai yang dapat Anda isi yaitu: OK! (Default): tombol OK OKCancel!: tombol OK dan Cancel YesNo!: tombol Yes dan No YesNoCancel!: tombol Yes, No, dan Cancel RetryCancel!: tombol Retry dan Cancel AbortRetryIgnore!: tombol Abort, Retry, dan Ignoredefault adalah nomor urut tombol yang ingin diset sebagai tombolaktif. Nilai default dari PowerBuilder adalah 1. Sebagai contoh,Anda ingin menampilkan pesan dengan tiga buah tombol ketikapemakai menutup sheet di mana pemakai telah melakukanperubahan data tetapi lupa meyimpannya, maka Anda dapatmenampilkan pesan Sudah terjadi perubahan data, simpan?, dengantiga buah pilihan, yaitu Yes, No, atau Cancel. Anda dapatmemberikan nilai default 1, 2, atau 3. Nilai satu adalah untuk Yes, 2untuk No, dan 3 untuk Cancel.Jika fungsi ini berhasil dilaksanakan maka fungsi ini akanmengembalikan nilai integer (1, 2, atau 3) dari pemilihan tomboldan –1 jika terjadi error. Jika ada argumen bernilai null,MessageBox() akan mengembalikan NULL.Contoh lain:MessageBox("Close Window","Sudah terjadi perubahan data, simpan?",&Question!,YesNoCancel!,3)TriggerEventSintaks:objectname.TriggerEvent ( event {, word, long} )Keterangan:objectname adalah nama obyek atau kontrol yang mempunyaikejadian (event).event adalah nilai dari kejadian yang berupa data enumeratedmisalnya Clicked!, Modified!, or DoubleClicked!, Close!, dansebagainya. 177
  25. 25. Anda dapat juga memberikan nama user event. Mengenai hal iniakan dibahas pada bagian window sheet.word dan long adalah tipe data yang ingin diambil dalam WordParmdan LongParm obyek Message. TIP User Id dan Password yang disimpan dalam tabel adalah data biasa yang bisa dibaca secara langsung saat tabel ditampilkan dengan edit data. Agar data ini tidak dapat dibaca oleh orang yang tidak berkepentingan dan hanya bisa dibaca oleh program, Anda dapat menggunakan teknik enkripsi.7.4 Window UtamaTipe window yang digunakan untuk window utama adalah tipewindow MDI Frame atau MDI Frame with Microhelp. Pada tipewindow ini Anda dapat membuka sheet lebih dari satu sheetsekaligus.7.4.1 Pembuatan Window UtamaPada prinsipnya cara pembuatan window utama sama denganpembuatan window login, hanya saja terdapat pebedaan tipewindow, yaitu pada window login menggunakan tipe Response danpada window utama menggunakan tipe MDI Frame with Microlhelp.Cara pembuatan window utama adalah sebagai berikut:1. Klik icon New pada PowerBar.2. Klik tab PB Object.3. Klik Window.4. Klik tab General pada tab properties.5. Ketikkan SIA-GL Versi 9.01 - Sistem Informasi Akuntansi - General Ledger dalam kotak title.178
  26. 26. 6. Pilih mdihelp! dalam dropdown Window Type.7. Ketikkan m_aplikasi pada MenuName atau klik tombol select (…) MenuName untuk mecari menu aplikasi di mana disimpan.8. Klik dropdown WindowState dan pilih maximized!9. Klik dropdown Icon dan pilih AppIcon!10. Klik icon Save atau pilih menu File | Save As atau Save. Klik nama file pustaka mylibrary.pbl dalam listbox Aplication Libraries tempat penyimanan window utama. Ketikkan nama window w_utama dalam kotak isian Windows. Klik OK.11. Klik icon Close untuk menutup painter window.7.4.2 Skrip Window UtamaPada awal dijalankannya aplikasi, skrip window login memanggilwindow utama. Sebelum window utama dibuka pemakai, aplikasimengharuskan pemakai untuk mengetikkan user id dan passwordpada window login. Aplikasi tidak dapat dilanjutkan sebelumpemakai memberikan respons dengan mengetikkan user id danpassword sesuai dengan user id dan password yang sah.Untuk mengetikkan skrip ini, ikuti langkah-langkah di bawah ini:1. Kilik icon Open.2. Pilih Windows dalam dropdown Objects of Type.3. Klik nama file pustaka mylibrary.pbl.4. Klik w_utama, kemudian klik OK.5. Klik tab Layout.6. Klik kanan mouse pada area obyek window dan pilih Script .7. Klik dropdown Select event dan pilih Closequery(), kemudian ketikkan skrip di bawah ini: if messageBox("Keluar",& "Anda ingin keluar?",question!,yesno!,1) = 2 then return 1 //kembali ke window utama 179
  27. 27. end if return 0 //laksanakan event Close()8. Kilik dropdown Select Event dan pilih Close().9. Ketikkan satu baris skrip di bawah ini: disconnect using sqlca ;Sebelum window ditutup putuskan hubungan database terlebihdahulu.7.4.3 Skrip AplikasiPada awal dijalankannya aplikasi, skrip aplikasi memanggil windowpembuka. Untuk mengetikkan skrip aplikasi, lakukan langkah-langkah berikut:1. Kilik icon Open.2. Pilih Application dalam dropdown Objects of Type.3. Klik nama file pustaka gl.pbl.4. Klik gl kemudian klik OK.5. Klik dropdown Select event dan pilih Open().6. Ketikkan satu baris skrip di bawah ini: open( w_aplikasi ) // buka window w_aplikasi7.4.4 Menjalankan AplikasiSetelah Anda mengerjakan beberapa pekerjaan di atas, sekarangAnda siap untuk menjalankan aplikasi tersebut dengan langkah-langkah sebagai berikut:1. Klik icon tombol Run pada PowerBar.2. Klik Yes. Pertanyaan ini muncul bila ada perubahan yang belum disimpan.3. Ketikkan sa pada User Id dan tekan tombol Enter.Ketika pemakai menekan tombol Enter, fokus beralih ke tombolLogin dan kejadian clicked dilaksanakan karena tombol Loginbernilai default. Jika pada database yang digunakan terdapat180
  28. 28. password, Anda dapat mengklik kotak isian Password untukmengetikkan password, kemudian mengklik tombol Login.7.5 Window SheetWindow sheet adalah window yang bertipe main dan digunakansebagai lembaran kerja, baik untuk menampilkan data (view) ataumemasukkan data (edit). Pekerjaan yang sering dilakukan padawindow sheet adalah menambah data baru, mengubah data, ataumenghapus data yang sudah ada. Perkerjaan ini termasuk pekerjaanmanipulasi database. Sebagian pekerjaan ini akan dilakukan olehDataWindow yang akan dibahas pada Bab 8. Sebelum DataWindowmelakukan pekerjaan ini, harus ada persiapan-persiapan agar datayang dimanipulasi tersebut tidak salah, misalnya melakukanpengaturan menu-menu sheet, event, serta pembuatan skripnya.7.5.1 Pembuatan WindowSecara garis besar, window sheet terdiri dari 3 (tiga) bagian sepertiditujukan Gambar 6.9, yaitu bagian pertama (atas) adalah bartempat logo perusahaan dan kotak isian untuk mencari data; bagiankedua (sebelah kiri) adalah menu tree yang berisi jenis-jenispekerjaan (input data) dalam sheet; dan bagian ketiga adalahjendela untuk menampilkan (view) data.Jendela dibagi menjadi dua bagian seperti yang ditunjukkanGambar 7.9. Bagian atas adalah jendela untuk menampilkan masterdan jendela bagian bawah berfungsi untuk menampilkan detail.Untuk membuat window sheet, ikuti langkah-langkah di bawah ini.1. Lakukan langkah-langkah seperti membuat window-window sebelumnya.2. Berikan tipe window Main.3. Klik tombol select (…) MenuName untuk memilih menu Sheet. Klik menu m_sheet. Menu m_sheet adalah menu yang telah Anda buat seblumnya. Jika menu ini tidak ditemukan pada file pustaka 181
  29. 29. yang dipilih, klik file pustaka yang lain di mana menu ini disimpan. Klik OK.4. Klik tab Other, berikan ukuran width 1403 dan height 772.5. Klik icon Save atau pilih menu File | Save atau Save As.6. Ketikkan nama (obyek) window w_sheet.7. Klik nama file pustaka tempat penyimpanan window ini, yaitu mylibrary.pbl.8. Klik OK.Pembuatan Bar SheetBar sheet digunakan sebagai bantalan untuk menempatkan kontrolgambar (logo perusahaan), kontrol teks statis cari data, dan kontrolDataWindow cari. Untuk membuat bar sheet, ikuti langkah-langkahdi bawah ini:1. Klik icon Picture dalam PainterBar1 atau klik dropdown kontrol untuk menampilkan icon kontrol, kemudian klik icon Create Pircture control.2. Klik area di atas bagian pojok kiri atas, maka akan terbentuk kontrol gambar dengan nama p_1.3. Klik kontrol gambar p_1: Klik tab General. Ganti nama kontrol gambar p_1 menjadi p_bar. Klik tombol select (…) PictureName. Pilih file gambar barputih.bmp.4. Posisi dan ukuran bar: Klik tab Other. Ketikkan 0 (nol) pada kotak isian X dan Y. Ketikkan 1362 pada kotak isian Width. Ketikkan 156 pada kotak isian Height.5. Kontrol gambar logo perusahaan:182
  30. 30. Klik kontrol p_bar. Klik icon Picture dalam PainterBar1 atau klik dropdown kontrol untuk menampilkan icon kontrol, kemudian klik icon Create Picture control. Klik area di atas pojok kiri atas kontrol gambar p_bar (bertumpuk dengan kontrol p_bar), maka akan terbentuk kontrol p_1. Ganti nama kontrol gambar p_1 menjadi p_logo. Klik tombol select (…) PictureName, kemudian pilih file gambar logo perusahaan. Sebagai contoh, penulis menggunakan file gambar power-it.jpg. Atur ukuran tampilan gambar logo.6. Kontrol teks statis Cari data: Klik tab kontrol p_bar. Klik icon Static Text dalam PainterBar1 atau klik dropdown kontrol untuk menampilkan icon kontrol, kemudian klik icon Create Static Text control. Klik area di sebelah kanan kontrol p_logo, maka akan terbentuk kontrol st_1. Ganti nama kontrol st_1 menjadi st_cari. Ganti teks None dalam kotak isian Text menjadi &Cari data:. Atur posisi kontrol.7. Kontrol DataWindow cari: Klik tab kontrol p_bar. Klik icon DataWindow dalam PainterBar1 atau klik dropdown kontrol untuk menampilkan icon kontrol, kemudian klik icon Create DataWindow control. Klik area di sebelah kanan kontrol st_cari, maka akan terbentuk kontrol dw_1. Ganti nama kontrol dw_1 menjadi dw_cari. Atur posisi kontrol. 183
  31. 31. Pembuatan Kontrol TreeViewKontrol TreeView digunakan untuk menampilkan menu tree, yaitumenu yang berisi jenis-jenis pekerjaan (input data) dalam sheet.Langkah-langkah untuk membuat kontrol treeview adalah sebagaiberikut:1. Klik icon TreeView dalam PainterBar1 atau klik dropdown kontrol untuk menampilkan icon kontrol, kemudian klik icon Create TreeView control.2. Klik area di bawah kontrol p_bar, maka akan terbentuk kontrol tv_1.3. Ganti nama kontrol tv_1 menjadi t_sheet.4. Klik tab Pictures, klik dropdown picture, dan pilih Tables!.5. Atur ukuran dan posisi kontrol.Pembuatan Kontrol DataWindow MasterKontrol DataWindow master digunakan untuk menghubungkan sheet(window) dengan obyek DataWindow master. Langkah-langkah untukmembuat kontrol DataWindow master adalah sebagai berikut:1. Klik icon DataWindow dalam PainterBar1 atau klik dropdown kontrol untuk menampilkan icon kontrol yang ada, kemudian klik icon Create DataWindow control.2. Klik area di bawah kontrol p_logo dan sejajar dengan kontrol tv_sheet, maka akan terbentuk kontrol dw_1.3. Ganti nama kontrol dw_1 menjadi dw_master.4. Berikan tanda centang pada kotak cek HScrollBar dan VScrollBar.5. Atur ukuran dan posisi kontrol.Pembuatan Kontrol DataWindow DetailKontrol DataWindow detail digunakan untuk menghubungkan sheet(window) dengan obyek DataWindow detail. Langkah-langkah untukmembuat kontrol DataWindow master adalah sebagai berikut:1. Klik icon DataWindow dalam PainterBar1 atau klik dropdown kontrol untuk menampilkan icon kontrol, kemudian klik icon Create DataWindow control.184
  32. 32. 2. Klik area di bawah kontrol dw_master, maka akan terbentuk kontrol dw_1.3. Ganti nama kontrol dw_1 menjadi dw_detail.4. Berikan tanda centang pada kotak cek HScrollBar dan VScrollBar.5. Atur ukuran dan posisi kontrol.Pembuatan Batas PemisahBatas pemisah adalah untuk pemisah antara jendela-jendela dalamsheet. Batas pemisah ini ada dua buah, yang pertama (vertikal)digunakan untuk melebarkan/mengecilkan jendela menu tree danjendela data ke kanan/ke kiri dan yang kedua digunakan untukmelebarkan jendela master dan mengecilkan jendela detail ataumengecilkan jendela master dan melebarkan jendela detail keatas/bawah. Anda dapat melihat contoh batas pemisah ini dalamwindow w_tv_dw_link pada Examples PowerBuilder. Untuk membuatbatas pemisah, ikuti langkah-langkah di bawah ini:1. Pembatas vertikal: Klik icon Static Text. Klik area antara kontrol tv_sheet dan dw_master, maka akan terbentuk kontrol st_1. Ganti nama kontrol st_1 menjadi st_vertical. Klik dropdown Pointer dan pilih SizeNS!. Klik kanan mouse pada kontrol st_vertical untuk menampilkan menu pop-up. Klik dropdown event, pilih event mousedown, kemudian ketikkan satu baris skrip di bawah ini: BackColor = 0 Skrip pada event mousedown ini akan dijalankan ketika pointer mouse berada pada kontrol st_vertikal. Klik dropdown event, pilih event mousemove, kemudian ketikkan satu bari skrip di bawah ini: //Check for move in progess If KeyDown(keyLeftButton!) Then This.x = Parent.Pointerx() 185
  33. 33. End If2. Pembatas horisontal: Klik icon Static Text. Klik area antara kontrol dw_master dan dw_detail, maka akan terbentuk kontrol st_1. Ganti nama kontrol st_1 menjadi st_horizontal. Klik dropdown Pointer dan pilih SizeNS! Klik kanan mouse pada kontrol st_horizontal untuk menampilkan menu pop-up. Klik dropdown event, pilih event mousedown, kemudian ketikkan satu baris skrip di bawah ini: BackColor = 0 Skrip pada event mousedown ini akan dijalankan ketika pointer mouse berada pada kontrol st_horizontal. Klik dropdown event, pilih event mousemove, kemudian ketikkan satu baris skrip di bawah ini: //Check for move in progess If KeyDown(keyLeftButton!) Then BackColor = 0 y = Parent.PointerY() End If p_logo tv_menu st_cari dw_cari dw_master dw_detil st_vertikal st_horizontal Gambar 7.8 Layout window sheet186
  34. 34. 7.5.2 Pendeklarasian Variabel InstanceAda beberapa variabel instance yang dibutuhkan window sheetseperti diperlihatkan dalam Tabel 7.1. Tabel 7.1 Variabel Instance Window Sheet Nama Variabel Tipe Keterangan idw_aktif datawindow dw_master atau dw_detail ii_keymaster integer No kolom primary key master ii_keyDetail integer No kolom primary key detail is_kolMaster string Nama kolom primary key master is_keyMaster string Isi kolom primary key detail is_dw_master string Nama obyek DataWindow master is_dw_detail string Nama obyek DataWindow detail is_dwo_rpt string Nama obyek DataWindow preview is_wEdit string Nama obyek window edit is_judul string Teks title window sheet Lebar kontrol DataWindow ii_newWidth integer terakhir Tinggi kontrol DataWindow ii_newHeight integer terakhir ii_TebalBar integer Tebal bar ii_windowborde integer Ukuran border r il_hiddencolor long Warna background sheetUntuk menmdeklarasikan variabel instance di atas, klik tab DeclareInstanceVariable pada window sheet, kemudian ketikkan skrip dibawah ini:datawindow idw_aktifinteger ii_keymaster, ii_keyDetailstring is_kolMaster,is_keyMasterstring is_dw_master,is_dw_detail,is_dwo_rpt 187
  35. 35. string is_wEdit,is_judulinteger ii_newWidth,ii_newHeightlong il_hiddencolor = 0integer ii_TebalBar = 11integer ii_windowborder = 157.5.3 Pembuatan User EventJika pemakai melakukan sesuatu, misalnya mengklik icon Maju,Mundur, Baru dan sebagainya pada window sheet, apa yang terjadipada program? Program akan merespons kejadian yang dilakukanoleh pemakai. PowerBuilder sendiri tidak menyediakan event untukmelakukan pekerjaan seperti menu sheet yang telah Anda buat diatas. PowerBuilder memberi kesempatan kepada programmerPowerBuilder untuk membuat user event.Event-event yang harus dibuat sesuai dengan menu Sheet adalahsebagai berikut:Panggil—kejadian untuk memanggil data.Simpan—kejadian untuk menyimpan data.Preview—kejadian untuk menampilkan data dalam bentuk preview.Baru—kejadian untuk menambah data.Hapus—kejadian untuk menghapus data.Ubah—kejadian untuk mengubah (edit) data.Awal—kejadian untuk memindahkan baris (record) ke awal baris.Mundur—kejadian untuk memindahkan baris ke baris sebelumnya.Maju—kejadian untuk memindahkan baris ke baris berikutnya.Akhir—kejadian untuk memindah baris ke akhir baris.Tutup—kejadian untuk menutup sheet.Untuk membuat user event ikuti langkah-langkah di bawah ini:1. Klik kanan mouse pada area window dan pastikan Anda tidak mengklik kontrol obyek, kemudian pilih Script. Untuk memastikan bahwa Anda adalah mengklik area window bukan kontrol obyek, lihat status line yang menampilkan Nothing Selected.188
  36. 36. 2. Klik dropdown Event dan pilih New Event. Default event yang tampil adalah event Open.3. Ketikkan ue_panggil pada Event Name.4. Ulangi langkah (2), lalu ketikkan ue_simpan pada Event Name.5. Ulangi langkah (2), lalu ketikkan ue_preview pada Event Name.6. Ulangi langkah (2), lalu ketikkan ue_baru pada Event Name.7. Ulangi langkah (2), lalu ketikkan ue_hapus pada Event Name.8. Ulangi langkah (2), lalu ketikkan ue_ubah pada Event Name.9. Ulangi langkah (2), lalu ketikkan ue_awal pada Event Name.10. Ulangi langkah (2), lalu ketikkan ue_mundur pada Event Name.11. Ulangi langkah (2), lalu ketikkan ue_maju pada Event Name.12. Ulangi langkah (2), lalu ketikkan ue_akhir pada Event Name.13. Ulangi langkah (2), lalu ketikkan ue_tutup pada Event Name. Gambar 7.9 Pendefinisian User Event7.5.4 Pembuatan Fungsi WindowFungsi window yang diperlukan di sini adalah fungsi window untukmenggerakkan batas pemisah vertikal dan horisontal pada sheetseperti yang telah disinggung pada bagian pembuatan batas pemisah 189
  37. 37. di atas, yaitu fungsi wf_refreshbars, wf_resizebars, danwf_resizepanels. Anda dapat melihat contoh ketiga fungsi ini dalamwindow w_tv_dw_link pada Examples PowerBuilder. Skrip padafungsi ini telah penulis modifikasi dan disesuai dengan kebutuhanwindow sheet. Untuk membuat ketiga fungsi ini, langkah-langkahnyaadalah sebagai berikut:1. Klik obyek window w_sheet.2. Klik tab Function List .3. Fungsi wf_refreshbars: Klik kanan mouse pada Function List, kemudian pilih Add. Ketikkan nama fungsi wf_refreshbars pada Function Name. Ketikkan skrip di bawah ini: Integer li_Cnt //Force appropriate order st_vertical.SetPosition(ToTop!) st_horizontal.SetPosition(ToTop!) //Make sure the Width is not lost st_vertical.Width = ii_TebalBar st_horizontal.Height= ii_TebalBar Return 14. Fungsi wf_resizebars: Klik dropdown Function List dan pilih (New Function). Ketikkan nama fungsi wf_ resizebars pada Function Name. Ketikkan skrip di bawah ini: //Resize Bars according to Bars themselves,WindowBorder, //and BarThickness st_vertical.Move(st_vertical.X, 148) st_vertical.Resize(ii_TebalBar, 5 + This.WorkSpaceHeight() - (2 * ii_WindowBorder)) integer li_HX, li_HW li_HX = st_vertical.X + ii_TebalBar li_HW = This.WorkSpaceWidth() - li_HX //- ii_WindowBorder st_horizontal.Move(li_HX, st_horizontal.y ) st_horizontal.Resize(li_HW, ii_TebalBar) wf_RefreshBars()190
  38. 38. Return 15. Fungsi wf_ resizepanels: Klik dropdown Function List dan pilih (New Function). Ketikkan nama fungsi wf_ resizepanels pada Function Name. Ketikkan skrip di bawah ini: //Resize the panels according to the Lines, //BarThickness, and WindowBorder. Integer li_X, li_Y, li_HHeight, li_HWidth // Left vertical object processing tv_sheet.Resize (st_vertical.X - tv_sheet.X , ii_newHeight ) // Horizontal object processing li_X = st_vertical.X + ii_windowborder li_Y = (p_bar.y + p_bar.height) dw_master.Move (li_X, li_Y ) dw_master.Resize ( ii_newWidth - tv_sheet.width , st_horizontal.y - li_Y ) li_Y = st_horizontal.y + 15 dw_detail.Move (li_X, li_Y ) dw_detail.Resize ( ii_newWidth - tv_sheet.width , tv_sheet.height - ( st_horizontal.Y + st_horizontal.height ) ) Return 16. Klik icon Save untuk menyimpan fungsi.7. Skrip event mouseup: Klik kanan mouse pada kontrol st_vertikal, pilih menu Script, klik dropdown event dan pilih event mouseup, kemudian ketikkan skrip bawah ini: //Hide the bar This.BackColor = il_HiddenColor //Resize Bars wf_ResizeBars() //Resize the panels wf_ResizePanels() 191
  39. 39. Klik kanan mouse pada kontrol st_horizontal, pilih menu Script, klik dropdown event dan pilih event mouseup, kemudian ketikkan skrip bawah ini: //Hide the bar This.BackColor = il_HiddenColor //Resize Bars wf_ResizeBars() //Resize the panels wf_ResizePanels()8. Klik icon Save untuk menyimpan perubahan skrip.7.5.5 Tombol Default SheetPada bagian menu sheet yang telah dibahas sebelumnya, terdapatmenu untuk menggerakkan baris data pada sheet seperti Awal(Ctrl+H, bergerak ke baris pertama), Mundur (Ctrl+N, bergerak kebaris sebelumnya), Maju (Ctrl+J, bergerak ke baris berikutnya), danAkhir (bergerak ke baris akhir).Selain menu di atas, pada sheet (termasuk window preview laporan)juga berlaku penekanan tombol (tombol default) untukmenggerakkan baris data, yaitu anak panah atas/bawah—maju/mundur baris Ctrl+Home—ke baris pertama, PageUp—mundur1 halaman, PgDn—maju 1 halaman dan Ctrl+End—ke baris akhir.7.5.6 Skrip WindowBanyak sekali kejadian-kejadian yang terjadi pada sheet, mulai darikejadian sheet dibuka (open) sampai dengan sheet ditutup (Close).Semua kejadian ini dapat digunakan untuk melakukan sesuatuterhadap window tersebut.Membuka SheetSebelum Anda dapat memasukkan data atau menampilkan data padasheet, Anda harus terlebih dahulu membuka sheet tersebut. Untukmembuka sheet, gunakan fungsi Opensheet().Sintaks:OpenSheet(namasheet {, tipewindow }, mdiframe {, posisi {,susunan } } )192
  40. 40. Keterangan:namasheet adalah nama sheet yang akan dibuka.tipewindow adalah string obyek window yang harus sama dengan nama sheet. Tipewindow ini boleh diisi atau boleh dilewatkan.mdiframe adalah nama window yang dapat menampung beberapa window sekaligus (MDI-Multi Document Interface) yang merupakan induk (parent) dari window sheet. Anda boleh langsung mengetikkan nama window MDI ini, yaitu w_utama, atau cukup mengetikkan parentwindow.Posisi adalah nomor item menu window input di mana nama window ini dimasukkan ke menu tersebut. Pada menu m_utama hanya disediakan 4 (empat) item menu, yaitu File (1), Informasi (2), Window (3), dan Tentang (4). Dengan demikian Anda hanya dapat memberikan 0, 1, 2, 3, atau 4. Nomor item menu 0 (nol) sama dengan 4 (empat). Pada contoh di atas, diberikan angka 0 yang artinya item menu pull-down (Window) akan ditambah dengan nama-nama sheet yang sedang dibuka. Anda dapat berpindah dari satu sheet ke sheet yang lain dengan mengklik nama sheet yang ada pada menu Window tersebut.susunan adalah bentuk susunan tampilan window input bilamana dibuka lebih dari satu window. Argumen ini dapat diisi dengan nilai data bertipe enumerated, yaitu: Cascaded! (Default), yaitu window yang tidak aktif relatif berada di belakang window aktif. Layered!, yaitu tampilan window input yang dibuka berlapis-lapis ke belakang window aktif. Original!, yaitu tampilan window input sesuai dengan tampilan aslinya dan juga Cascade.Sheet dibuka melalui menu utama dengan memberikan skrip. Untukmengetikkan skrip ini, caranya adalah sebagai berikut: 193
  41. 41. 1. Klik tanda + pada nama file mylibrary.pbl2. Klik ganda m_utama.3. Klik tanda + pada &File.4. Klik Data. PowerBuilder secara otomatis akan membuka layar editor untuk mengetikkan skrip event clicked. Apabila event yang terbuka bukan event clicked, Anda dapat mengklik dropdown event kemudian memilih event clicked. Ketikkan skrip di bawah ini: opensheet(w_sheet,parentwindow,0,Layered!)Menutup SheetSetelah selesai bekerja, sebaiknya sheet harus ditutup kembali.Untuk menutup sheet, gunakan fungsi Close() yang dilaksanakanoleh fungsi triggerevent() melalui menu sheet.Sintaks:Close (namawindow)Keterangan:namawindow adalah nama window sebagai sheet yang dibukadengan fungsi Opensheet ().TriggerEventSintaks:namaObyek.TriggerEvent ( event {, word, long } )Keterangan:namaObyek adalah nama obyek atau kontrol yang mempunyai event dan terhubung dengan namaObyek ini.event adalah nama event yang akan dilaksanakan serta berupa data enumerated seperti Close!, Clicked!, dan sebagainya. Event ini juga boleh berupa string dari nama user event.word adalah sebuah nilai yang disimpan dalam properti WordParm obyek Message.194
  42. 42. long adalah sebuah nilai yang disimpan dalam properti LongParm obyek Message.Sheet ditutup melalui menu sheet. Untuk mengetikkan skrip ini,ikuti langkah-langkah di bawah ini:1. Buka menu m_sheet.2. Klik kanan mouse pada item menu Tutup untuk menampilkan menu pop-up, pilih Script, kemudian ketikkan skrip berikut ini: Close(parentwindow)Event ResizeSebelum window sheet ditampilkan, event ini pertama kali akandijalankan secara otomatis untuk mengubah tampilan window sheetyang mengikuti resolusi monitor. Berikut ini penjelasan beberapapernyataan baru yang digunakan pada skrip event resize.Saat event resize pertama kali dijalankan, Anda harus menyimpanresolusi monitor ke variabel instance ii_newWidth dan ii_newHeightuntuk keperluan perubahan besar jendela-jendela dalam sheet.Untuk mengetahui apakah event resize pertama kali dibuka atautidak, periksalah nilai variabel ii_newWidth atau ii_newHeight. Nilai0 pada variabel ini menandakan event resize pertama kalidijalankan.Pekerjaan selanjutnya adalah menentukan lebar tampilan masing-masing kontrol. Lebar tampilan window sheet adalah 100% samadengan nilai newWidth, yaitu lebar kontrol DataWindow dalamsatuan pixel yang telah disesuaikan secara otomatis dengan resolusitampilan monitor. Lebar ini dibagi tiga, yaitu untuk jendela menutree, batas pemisah jendela menu tree dengan jendela DataWindow(vertikal), dan jendela DataWindow. Prosentase masing-masingtampilan ini adalah 13% dari nilai newWidth untuk jendela menutree, 15 pixel untuk batas pemisah vertikal, dan ( 83% * newWidth )- 15 pixel untuk jendela DataWindow. Lebar bar sheet adalah samadengan lebar window sheet.Tinggi tampilan jendela menu tree adalah tinggi kontrolDataWindow - (titik sumbu y kontrol p_bar + tinggi kontrol p_bar).Titik koordinat kontrol dw_master adalah titik sumbu x berada padatitik sumbu x menu tree ditambah dengan lebar menu tree danditambah 15 pixel (lebar batas pemisah); sedangkan titik sumbu y 195
  43. 43. berada pada titik sumbu y kontrol p_bar ditambah dengan tinggikontrol p_bar.Besar tampilan kontrol dw_master akan berubah jika obyek kontroldw_detail kosong (tanpa detail). Perubahan ini dapat dilakukandengan memeriksa obyek kontrol dw_detail. Jika kontrol dw_detailberisi obyek DataWindow detail dan tinggi obyek DataWindowmaster lebih dari 30% dari nilai newHeight, ubah tinggi kontroldw_master menjadi 30% dari nilai newHeight, 15 pixel untuk bataspemisah horisontal, dan 70% dari nilai newHeight dikurangi 15 pixeluntuk tinggi kontrol dw_detail. Titik sumbu x kontrol dw_detailberada pada titik sumbu y kontrol dw_master ditambah dengantinggi kontrol dw_master ditambah 15 pixel. Tinggi kontroldw_detail adalah sama dengan nilai newHeight dikurangi nilai titiksumbu y kontrol ini. Sebaliknya, jika obyek DataWindow detail tidakada maka tinggi kontrol dw_master sama dengan tinggi menu treedan tinggi kontrol dw_detail sama dengan nol (jendela detail tidaktampil).Tampilan selanjutnya adalah tampilan kontrol st_cari dan dw_cari.Kontrol st_cari ditampilkan sejajar dengan titik sumbu x menu treedan lebarnya juga sama dengan lebar menu tree, sedangkan kontroldw_cari ditampilkan sejajar dengan titik sumbu x kontrol dw_masterdan lebarnya juga sama dengan lebar kontrol dw_master.Terakhir ubah tampilan batas pemisah, yaitu pertama denganmemindahkan kontrol st_vertikal ke titik sumbu x pada titik sumbu xmenu tree ditambah dengan lebar menu tree dan titik sumbu y padatitik 148. Kedua, dengan memindahkan kontrol st_horizontal ke titiksumbu x pada titik sumbu x menu tree ditambah dengan lebar menutree dan titik sumbu y pada titik sumbu y kontrol dw_masterditambah dengan tinggi kontrol dw_master. Ketiga, ubah ukurankontrol st_ horizontal dengan lebar sama dengan kontrol dw_masterdan tinggi sama dengan ii_TebalBar, yaitu 15 pixel.Selengkapnya, skrip event resize adalah sebagai berikut:string ls_dw_master_tinggi//Default tampilanif ii_newWidth = 0 then ii_newWidth = newWidth ii_newHeight= newHeightend ifp_bar.width = ii_newWidth196
  44. 44. tv_sheet.x = 0tv_sheet.width = ii_newWidth * 0.17tv_sheet.height = ii_newHeight - (p_bar.y + p_bar.height )dw_master.x = tv_sheet.x + tv_sheet.width + 15dw_master.y = (p_bar.y + p_bar.height)dw_master.width = ( ii_newWidth * 0.83 ) - 15ls_dw_master_tinggi= dw_master.Describe(& "DataWindow.Detail.Height")dw_detail.x = dw_master.xdw_detail.width = dw_master.widthif is_dw_detail <> thenif integer(ls_dw_master_tinggi)>ii_newHeight * 0.30 or & ls_dw_master_tinggi = then dw_master.height = ii_newHeight * 0.30 end if dw_detail.y = (dw_master.y + dw_master.height) + 15 dw_detail.height = ii_newHeight - dw_detail.yelse dw_master.height = tv_sheet.height dw_detail.y = (dw_master.y + dw_master.height) + 15 dw_detail.height = 0end ifst_cari.x = tv_sheet.xst_cari.width = tv_sheet.widthdw_cari.x = dw_master.xdw_cari.width = dw_master.width// Set the color of the bars to make them invisiblest_vertical.Move(tv_sheet.x + tv_sheet.width, 148 )st_horizontal.Move(tv_sheet.x + tv_sheet.width , dw_master.y +dw_master.Height )st_horizontal.Resize(dw_master.width, ii_TebalBar)Event OpenEvent ini dijalankan secara otomatis setelah event resize. Banyakyang dapat Anda lakukan saat event ini dijalankan, di antaranyamenampilkan menu tree dan mengubah tampilan batas pemisah.Berikut ini penjelasan beberapa pernyataan baru yang digunakanpada skrip event Open. 197
  45. 45. Menampilkan Menu TreeMenu tree ditampilan dengan menambah item kontrol tv_sheetdengan fungsi InsertItemFirst.Sintaks:kontrolTv.InsertItemFirst ( handleparent, label, indeksGambar)Keterangan:kontrolTv adalah nama kontrol treeview seperti tv_sheet.InsertItemFirst adalah fungsi yang digunakan untuk menambah item treeview.handleparent adalah handle induk (parent) dari item tree. Nilai 0 (nol) adalah untuk level pertama.label adalah label (teks) yang akan ditampilkan pada treeview, yaitu Tabel Referensi dan Transaksi adalah level pertama; Kelompok, Subkelompok dan Perkiraan adalah level kedua dari Tabel Referensi, serta Jurnal dan Tutup Buku adalah level kedua dari Transaksi.indeksGambar adalah nomor urut gambar yang telah diisi pada tab Pictures.Berikut ini adalah skrip untuk menampilkan menu tree yangditempatkan pada event open.long ll_level1ll_level1 = tv_sheet.InsertItemFirst(0,"Tabel Referensi",1) tv_sheet.InsertItemFirst(ll_level1,"1.Kelompok",2)tv_sheet.InsertItemFirst(ll_level1,"2.Subkelompok",2)tv_sheet.InsertItemFirst(ll_level1,"3.Perkiraan",2)ll_level1 = tv_sheet.InsertItemFirst(0,"Transaksi",1)tv_sheet.InsertItemFirst(ll_level1,"Jurnal",2)tv_sheet.InsertItemFirst(ll_level1,"Tutup Buku",2)Mengubah Tampilan Batas PemisahCara mengubah tampilan batas pemisah adalah dengan mengetikkanskrip di bawah ini:// Set warna batas pemisah sesuai dengan warna bacground// window sheet agar tidak kelihatan (invisible)il_HiddenColor = BackColor //warna bacground window sheetst_Vertical.BackColor = il_HiddenColor198
  46. 46. st_horizontal.BackColor = il_HiddenColor//Ubah ukuran batas pemisah proporsional dgn tampilan sheetwf_ResizeBars()//Ubah ukuran jendela proporsional dengan tampilan sheetwf_ResizePanels()Kotak Isian Cari DataAgar pemakai dapat mengetikkan data yang akan dicari, Anda harusmenyediakan 1 (satu) baris kosong sebagai kotak isian mengetikanuntuk menggetikkan skrip di bawah ini://Hubungkan kontrol dw_cari ke database dan baris kosongdw_cari.setTransObject(SQLCA)dw_cari.scrolltorow(dw_cari.insertrow(0))Pemilihan Menu TreePemilihan menu tree adalah untuk menampilkan data pada jendelamaster dan detail. Pemilihan menu tree akan menjalankan eventselectionchanged pada kontrol tv_sheet. Ada beberapa pekerjaanyang harus dilakukan pada event ini, yaitu mengisi variabelinstance, mengisi nama obyek DataWindow, menghubungkan kontrolDataWindow dengan database, memanggil data, mengambil keymaster (Primary Key), mengaktifkan kontrol DataWindow master,mengubah tampilan ukuran sheet sesuai dengan resolusi monitor danmengeset tampilan menu sheet.Mengisi Variabel InstanceVariabel instance ini diisi jika menu tree yang dipilih adalahsubmenu tree (1. Kelompok, 2. Subkelompok, 3. Perkiraan, Jurnalatau Tutup Buku) yang dipilih. Jika yang dipilih bukan submenu treeseperti Tabel Referensi atau Transaksi maka isi variabel instanceadalah isi yang terakhir. Cara memeriksa menu mana yang dipilihadalah dengan memeriksa isi parameter newhandle treeview padaevent selectionchanged seperti skrip di bawah ini:is_dw_detail = ii_keymaster= 1ii_keyDetail = 0is_wdEdit = idw_aktif = dw_masterchoose case newhandle case 2 //Menu 1.Kelompok is_judul = Tabel Referensi Kelompok 199
  47. 47. is_wmEdit = w_trn_kelompok_edit is_dw_master = dwo_ref_kelompok_view is_dwo_rpt = dwo_ref_kelompok_rpt case 3 //Menu 2.Subkelompok is_judul = Tabel Referensi Subkelompok is_wmEdit = w_trn_SubKelompok_edit is_dw_master = dwo_ref_Subkelompok_view is_dwo_rpt = dwo_ref_Subkelompok_rpt case 4 //Menu 3.Perkiraan is_judul = Tabel Referensi Perkiraan is_wmEdit = w_trn_perkiraan_edit is_dw_master = dwo_ref_perkiraan_view is_dwo_rpt = dwo_ref_perkiraan_rpt case 6 is_judul = Transaksi Jurnal is_wmEdit = w_trn_jurnal_edit is_wdEdit = w_trn_jurnal_detail_edit is_dw_master= dwo_trn_jurnal_view is_dw_detail = dwo_trn_jurnal_detail_view is_dw_rpt = case 7 //Menu Tutup Buku open (w_trn_tutup_buku, parent)end chooseMenu sheetPertama kali sheet dibuka, pemilihan menu secara default adalahmenu pertama, yaitu Tabel Referensi (newhandle bernilai 1), berartibelum ada pilihan data untuk ditampilkan. Dengan demikianpemakai hanya dapat melakukan pemilihan menu tree dan menutupsheet, sedangkan menu edit sheet yang lainnya dalam keadaan tidakaktif (disable). Cara mematikan menu sheet adalah dengan skripseperti di bawah ini:m_sheet.m_edit.m_buka.enabled = falsem_sheet.m_edit.m_simpan.enabled = falsem_sheet.m_edit.m_preview.enabled = falsem_sheet.m_edit.m_baru.enabled = falsem_sheet.m_edit.m_ubah.enabled = falsem_sheet.m_edit.m_hapus.enabled = falsem_sheet.m_edit.m_awal.enabled = falsem_sheet.m_edit.m_mundur.enabled = falsem_sheet.m_edit.m_maju.enabled = falsem_sheet.m_edit.m_akhir.enabled = false200
  48. 48. m_sheet.m_edit.m_tutup.enabled = trueMengisi nama obyek DataWindowCara mengisi obyek DataWindow adalah dengan mengisi propertiDataObject dengan string nama obyek DataWindow. PropertiDataObject untuk kontrol dw_master diisi jika terjadi perubahan isivariabel is_dw_master, sedangkan properti DataObject untukkontrol dw_detail tidak. Berikut ini adalah skrip untuk mengisiproperti DataObject.if is_dw_master <> dw_master.dataobject then dw_master.dataobject = is_dw_masterend ifdw_detail.dataobject = is_dw_detailSetTransObject()Fungsi ini digunakan untuk menghubungkan kontrol DataWindowdengan database.Sintaks:kontroldw.SetTransObject ( transaksi )Keterangan:kontroldw adalah nama kontrol DataWindow seperti dw_master, dw_detail.transaksi adalah nama transaksi yang digunakan yaitu SQLCA. Fungsi ini dapat dijalankan setelah aplikasi terhubung dengan database, yaitu yang dilakukan pada saat mengklik tombol Login pada window w_login.Retrieve()Fungsi retrieve() adalah fungsi yang digunakan untuk memanggildata dari database dan menempatkannya dalam buffer kontrolDataWindow. Fungsi ini dijalankan dengan menjalankan user eventue_buka.Sintaks:kontroldw.Retrieve ( {darftarArgumen } ) 201
  49. 49. Keterangan:kontroldw adalah nama kontrol DataWindow seperti dw_master, dw_detail.daftarargumen adalah argumen-argumen yang digunakan sebagai persyaratan pemanggilan data, jika tidak diikutsertakan maka semua data akan dipanggil sesuai dengan query (SELECT).Setelah data dipanggil, aktifkan kontrol DataWindow dw_master,jalankan event rowfocuschanged dw_master, kosongkan kotak isiancari data, set fokus pada kotak isian cari data, dan atur tampilanmenu edit. Skrip user event ue_panggil selengkapnya adalah sepertidi bawah ini:dw_master.setTransObject(SQLCA)dw_detail.setTransObject(SQLCA)parent.triggerevent("ue_buka")dw_master.triggerevent(clicked!)dw_master.triggerevent(rowfocuschanged!)dw_cari.setFocus()if dw_master.rowcount() > 0 then m_sheet.m_edit.m_ubah.enabled = true m_sheet.m_edit.m_hapus.enabled = true m_sheet.m_edit.m_preview.enabled = true if dw_master.rowcount() > 1 then m_sheet.m_edit.m_maju.enabled = true m_sheet.m_edit.m_akhir.enabled= true end ifelse m_sheet.m_edit.m_ubah.enabled = false m_sheet.m_edit.m_hapus.enabled = false m_sheet.m_edit.m_preview.enabled = falseend ifMengambil KeyMasterKeymaster adalah nama kolom master (primary key) yang diperlukanuntuk pemanggilan detail. Nama kolom ini dapat diambil denganfungsi describe().Sintaks: kontroldw. Describe (daftar properti )202
  50. 50. Keterangan:kontroldw adalah nama kontrol DataWindow seperti dw_master dan dw_detail.daftar properti adalah daftar properti kontrol DataWindow yang diapit dengan tanda kutip dua (“).Cara untuk mengambil nama kolom master yang ditempatkan padaurutan pertama (kolom 1) adalah sebagai berikut:is_kolMaster = dw_master.Describe("#1.Name")Kolom master tidak selalu berada pada urutan pertama, bergantungpemilihan (select) yang dilakukan saat pembuatan DataWindow, bisasaja pada urutan pertama, kedua, terakhir, dan sebagainya. Yangperlu diketahui adalah urutan di mana kolom master (Primary Key)tersebut ditempatkan. Dengan demikian, skrip untuk mengambilkolom master menjadi seperti di bawah ini.is_kolMaster = dw_master.Describe("#" + &string( ii_keymaster ) + ".Name")Keadaan tidak dapat diubahDefault data yang ditampilkan pada jendela data adalah padakeadaan yang tidak dapat diubah (read only=true). Keadaan inidapat ditentukan dengan mengetikkan skrip di bawah ini:dw_master.object.datawindow.readonly = true if is_dw_detail <> thendw_detail.object.datawindow.readonly = trueend ifMengaktifkan kontrol DataWindowDefault kontrol DataWindow yang aktif adalah kontrol DataWindowmaster. Kontrol DataWindow ini dapat diaktifkan secara otomatissetelah pemilihan menu tree dengan menjalankan event clicked(akan dibahas pada pembahasan selanjutnya) pada kontroldw_master seperti skrip di bawah ini.dw_master.triggerevent(clicked!) //Default DW aktifatauidw_aktif = dw_master 203
  51. 51. Mengubah tampilan ukuran sheetUkuran tampilan sheet akan disesuaikan dengan ukuran tampilanobyek DataWindow yang telah diisi pada properti DataObject. Untukmengubah tampilan sheet, jalankan event resize dengantriggerevent seperti skrip di bawah ini:parent.triggerevent(resize!)Event CloseQueryEvent ini dijalankan setelah event Close dijalankan. Event inidigunakan untuk menutup query yang teleh dibuka dengan fungsiRetrieve(). Sebelum query ditutup, Anda dapat memeriksa apakahtelah terjadi perubahan data (data sudah disimpan atau belum).Jika pemakai telah melakukan perubahan data, Anda dapatmenampilkan pertanyaan untuk memberi kesempatan kepadapemakai. Berikut ini penjelasan beberapa pernyataan baru.DeletedCount ()Fungsi ini akan mengembalikan jumlah baris yang telah ditandaiuntuk dihapus dalam database.Sintaks:kontroldw.DeletedCount ( )ModifiedCount()Fungsi ini akan mengembalikan jumlah baris yang telah diubah padabuffer utama, yaitu tabel utama yang dipilih pada UpadateProperties.Sintaks:kontroldw. ModifiedCount ()Getitem()Fungsi ini berguna untuk mengambil data (nilai) dari buffer kontrolDataWindow atau DataStore. Nama fungsi getitem harus disesuaikandengan tipe data yang akan diambil. Fungsi untuk mengambil databertipe numeric adalah getitemnumber(), untuk mengambil databertipe desimal adalah dengan getitemdacimal(), untuk mengambildata bertipe tanggal adalah dengan getitemdate(), untuk mengambildata bertipe tanggal jam adalah dengan getitemdatetime(), untuk204
  52. 52. mengambil data bertipe jam adalah dengan getitemtime() dan untukmengambil data bertipe string adalah dengan getitemstring()Sintaks:kontroldw.GetItem ( baris, kolom {, bufferDw, nilaiAsli} )Keterangan:kontroldw adalah nama kontrol DataWindow seperti dw_master, dw_detail, dan dw_edit.baris adalah nomor baris data yang akan diambil.bufferDw adalah buffer DataWindow (opsional) yaitu Primary!, Delete!, Filter!.nilaiAsli adalah kondisi. Jika bernilai true maka GetItemString mengembalikan data sesuai dengan data yang dipanggil (retrieve), sebaliknya jika bernilai false maka GetItemString mengembalikan data sesuai dengan data yang tampil di layar. Apabila Anda mengikutsertakan bufferDw maka nilaiAsli juga harus diikutsertakan.AcceptText()Fungsi ini digunakan untuk menyimpan isi data baris aktif padakontrol DataWindow ke dalam buffer kontrol DataWindow. Sebelumdata pada baris aktif dalam kontrol DataWindow diambil, fungsi iniharus dilaksanakan terlebih dahulu, jika tidak maka baris aktifadalah baris aktif sebelumnya. Fungsi ini akan mengembalikan nilaiinteger 1 bila berhasil dilaksanakan atau nilai integer -1 bila tidakberhasil dilaksanakan.Sintaks:kontroldw.AcceptText()Contoh://Ambil isi kolom yang telah diketikkanls_kode = dw_1.getitemstring(dw_1.getrow(),’pk_kode’)//hasil nullif dw_master.AcceptText() = 1 Then ls_kode = dw_1.getitemstring(&dw_master.getrow(),’kp_kode’) //hasil misalnya 0001end if 205
  53. 53. Cara untuk mengetikkan skrip event CloseQuery adalah seperti dibawah ini:1. Klik dropdown event dan pilih Closequery.2. Ketikkan skrip di bawah ini: dw_master.AcceptText() dw_detail.AcceptText() long ll_rubah ll_rubah = dw_master.DeletedCount() + & dw_master.ModifiedCount() + & dw_detail.DeletedCount() + & dw_detail.ModifiedCount() IF ll_rubah > 0 then CHOOSE CASE MessageBox(& "Tutp Window","Telah terjadi perubahan,& Simpan data?",Question!,YesNoCancel!,3) CASE 1 this.triggerevent("ue_simpan") Close(this) case 2 Close(this) CASE 3 Return 1 //kembali ke widow aktif, //jika tanpa return 1 sama dengan //Close(this) END CHOOSE END IFMemindahkan BarisSaat Anda berada pada sheet data, Anda dapat memindahkan baris(record) ke baris yang diinginkan, apakah itu hanya untukmenampilkan data atau untuk keperluan perbaikan data. Padaumumnya yang dilakukan adalah bergerak maju atau mundur satubaris atau bergerak ke awal/akhir baris. Hal ini dapat Anda lakukandengan mengetikkan skrip pada user event yang telah Anda buat.Berikut ini penjelasan mengenai fungsi yang digunakan.ScrollToRow()Fungsi ini digunakan untuk memindahkan baris ke baris tertentu.206
  54. 54. Sintaks:kontroldw.ScrollToRow ( baris )Keterangan:baris adalah nomor baris yang dituju.RowCount()Fungsi ini digunakan untuk mengambil nomor baris terakhir ataujumlah data.Sintaks:kontroldw.RowCount ()GetRow()Fungsi ini digunakan untuk mengambil nomor baris aktif.Sintaks:kontroldw.GetRow ()ScrollNextRow()Fungsi ini digunakan untuk berpindah ke baris berikutnya atau majusatu baris dari baris aktif.Sintaks:kontroldw.ScrollNextRow()ScrollPriorRow()Fungsi ini digunakan untuk berpindah ke baris sebelumnya ataumundur satu baris dari baris aktif.Sintaks:kontroldw. ScrollPriorRow()Cara mengetikkan skrip untuk memindahkan baris adalah sebagaiberikut:1. Klik dropdown event dan pilih ue_awal, kemudian ketikkan skrip di bawah ini: if not isvalid( idw_aktif ) then return idw_aktif.scrollToRow(1) 207
  55. 55. 2. Klik dropdown event dan pilih ue_akhir, kemudian ketikkan skrip di bawah ini: if not isvalid( idw_aktif ) then return idw_aktif.scrollToRow(idw_aktif.rowCount())3. Klik dropdown event dan pilih ue_mundur, kemudian ketikkan skrip di bawah ini: if not isvalid( idw_aktif ) then return idw_aktif.scrollPriorRow()4. Klik dropdown event dan pilih ue_maju, kemudian ketikkan skrip di bawah ini: if not isvalid( idw_aktif ) then return idw_aktif.scrollNextRow()Menambah Data BaruLangkah untuk menambah data baru akan dilakukan pada windowedit sheet yang dipanggil melalui user event ue_baru. Window edityang dipanggil sesuai dengan window edit masing-masing jendeladata, misalnya jika data yang ditampilkan adalah data tabelreferensi kelompok maka window editnya adalah window editkelompok, jika data yang ditampilkan adalah data tabel referensisubkelompok maka window editnya adalah window editsubkelompok dan seterusnya. Pemanggilan window edit yangberbeda-beda pada user event ue_baru, dapat dilakukan denganfungsi OpenWithParm().Sintaks:OpenWithParm ( varWindow, parameter, tipeWindow{, induk } )Keterangan:varWindow adalah nama variabel bertipe window.parameter adalah parameter yang akan dilewatkan dan bernilai string , yaitu baru atau isi kolom master.tipeWindow adalah nama window yang akan dibuka berupa string seperti w_ref_kelompok_edit, w_ref_subkelompok- _edit, w_trn_jurnal_edit, dan w_trn_jurnal_detail_edit.208
  56. 56. induk adalah window yang akan dijadikan induk dari window yang akan dibuka, dalam hal ini adalah window sheet sebagai induk yang ditulis dalam kata cadangan this.Sebelum window edit dipanggil, deklarasikan variabel bertipewindow. Periksa DataObject DataWindow aktif. Jika kosong,tampilkan pesan Silakan pilih menu tree! dan pindah kembali kewindow sheet.Jika DataObject tidak kosong, periksa DataWindow aktif. JikaDataWindow aktif adalah master maka buka window edit masteryang disimpan dalam variabel is_wmEdit, sebaliknya jikaDataWindow aktif adalah detail maka buka window edit detail yangdisimpan dalam variabel is_wdEdit. Skrip user event ue_baruselengkapnya adalah sebagai berikut:window lw_editif idw_aktif.dataobject = then messagebox(Informasi,Silakan pilih menu tree!) returnelse if idw_aktif = dw_master then OpenWithParm(lw_edit, "baru", is_wmEdit, this) else OpenWithParm(lw_edit, "baru", is_wdEdit, this) end ifend ifPembahasan tentang window edit akan dibahas khusus pada bagianwindow edit.Mengubah DataMengubah data dilakukan bila ada data yang ditampilkan di layar.Data dapat diubah dengan memanggil window edit sheet yangdipanggil melalui user event ue_ubah. Window edit yang dipanggilsesuai dengan window edit masing-masing jendela data seperti yangtelah dijelaskan di atas. Window edit dibuka dengan fungsiOpenWithParm dengan mengirimkan paramater isi kolom master.Untuk mengetikkan skrip user event ue_ubah, ikuti langkah-langkahdi bawah ini:1. Klik dropdown event dan pilih ue_ubah.2. Ketikkan skrip di bawah ini: 209
  57. 57. window lw_edit if not isvalid( idw_aktif ) then return is_keyMaster = dw_master.getItemString(& dw_master.getRow(),is_kolMaster) if idw_aktif = dw_detail then if dw_detail.rowCount()=0 OR dw_detail.getRow()=0 then return OpenWithParm(lw_edit, is_keyMaster + ! + & string( ii_keymaster) + ! + string( ii_keyDetail),& is_wdEdit, this) else m_sheet.m_edit.m_simpan.enabled = true m_sheet.m_edit.m_hapus.enabled = true OpenWithParm(lw_edit, is_keyMaster, is_wmEdit, this) end ifMenghapus DataAdakalanya data yang telah dimasukkan ke dalam tabel (database)harus dihapus, mungkin data tersebut salah atau sudah tidakdigunakan lagi. Berikut ini penjelasan beberapa pernyataan baruyang digunakan.DeleteRow()Digunakan untuk menghapus baris. Fungsi ini akan mengembalikannilai integer 1 bila berhasil dilakukan atau nilai integer -1 bila tidakberhasil dilakukan.Sintaks:kontroldw.DeleteRow( baris )Keterangan:baris adalah nomor baris yang akan dihapus.Update()Fungsi ini digunakan untuk mengubah tabel. Fungsi ini akanmengembalikan nilai integer 1 bila berhasil dilakukan atau nilaiinteger -1 bila tidak berhasil dilakukan. Fungsi ini secara otomatisakan melaksanakan fungsi AcceptText().Sintaks:kontroldw.Update ( { accept {, resetflag } } )210
  58. 58. Keterangan:accept adalah kondisi bernilai true atau false dari hasil pelaksanaan fungsi AcceptText().resetflag adalah kondisi bernilai true untuk me-reset flag update kontrol DataWindow atau berfungsi sebaliknya untuk nilai false.CommitAdalah pernyataan yang digunakan untuk menyimpan secarapermanen semua perubahan yang dilakukan terhadap data sejakdiluncurkan terakhir kali.Sintaks:COMMIT {USING ObyekTransaksi} ;Keterangan:ObyekTransaksi adalah nama obyek transaksi, default-nya adalahSQLCARowsMove()Fungsi ini digunakan untuk menghapus sejumlah baris dari bufferdelete dan menyisipkannya ke kontrol DataWindow (atau DataStore)lain, dalam hal ini kontrol DataWindow yang diedit datanya(dw_master atau dw_detail). Fungsi RowsMove() dijalankanbilamana penghapusan data gagal sehingga data yang telah dihapus(dalam buffer delete) harus dikembalikan ke kontrol DataWindowasalnya.Sintaks:kontroldw.RowsMove(mulai, akhir, bufferAsal, dwTujuan, sebelum, bufferTujuan)Keterangan:kontroldw adalah nama kontrol DataWindow seperti dw_master, dw_detail dan dw_edit.mulai adalah nomor baris awal penghapusan.akhir adalah nomor baris akhir penghapusan. 211
  59. 59. bufferAsal adalah sebuah buffer DataWindow asal seperti Primary!, Delete!, Filter!. Dalam kasus penghapusan, data yang digunakan adalah buffer Delete!dwTujuan kontrol DataWindow tujuan data yang disisipkan, dalam hal ini adalah kontrol DataWindow sheet.sebelum adalah nomor baris ke berapa data disisipkan. Agar tidak terlihat perubahan pada sheet data, sebaiknya data disisipkan ke baris asal data sebelum dihapus.bufferTujuan adalah sebuah buffer DataWindow tujuan seperti Primary!, Delete!, Filter!. Dalam kasus penghapusan, data yang digunakan adalah buffer Primary!.SelectRow()Fungsi ini digunakan untuk memberi tanda baris yang diklik (dipilih).Sintaks:kontroldw.SelectRow ( baris, pilih )Keterangan:kontroldw adalah nama kontrol DataWindow (sebaiknya dengan tipe presentasi tabular atau grid) seperti dw_master dan dw_detail.baris adalah nomor baris yang akan dipilih.pilih adalah kondisi true untuk baris yang akan dipilih dengan warna terang. Kondisi false akan membebaskan pemilihan baris.SetRow()Fungsi ini digunakan untuk mengeset baris aktif (current row).Sintaks:kontroldw. SetRow ( baris )Keterangan:kontroldw adalah nama kontrol DataWindow (sebaiknya dengan tipe presentasi tabular atau grid) seperti dw_master dan dw_detail.212
  60. 60. baris adalah nomor baris yang diinginkan sebagai baris aktif.RollbackPernyataan ini digunakan untuk membatalkan semua operasidatabase sejak pernyataan commit terakhir dilaksanakan.Sintaks:ROLLBACK {USING ObyekTransaksi } ;Untuk mengetikkan skrip untuk menghapus data, langkah-langkahnya adalah sebagai berikut:1. Klik dropdown event dan pilih ue_hapus.2. Ketikkan skrip di bawah ini: if not isvalid( idw_aktif ) or idw_aktif.getrow() = 0 then return long ll_baris ll_baris = idw_aktif.getrow() if messageBox("Hapus","Anda ingin menghapus data ini?",& Question!,YesNoCancel!) = 1 then if idw_aktif = dw_master then is_keyMaster = dw_master.getItemString(& dw_master.getRow(),is_kolMaster) end if idw_aktif.deleteRow(0) if idw_aktif.update() = 1 then commit using sqlca ; else idw_aktif.RowsMove(1, 1, Delete!, idw_aktif,& ll_baris , Primary!) rollback using sqlca; end if end if if idw_aktif.rowcount() = 0 then m_sheet.m_edit.m_hapus.enabled = false m_sheet.m_edit.m_ubah.enabled = false else m_sheet.m_edit.m_hapus.enabled = true m_sheet.m_edit.m_ubah.enabled = true end if 213
  61. 61. idw_aktif.selectRow(idw_aktif.getrow(),true) idw_aktif.setRow(idw_aktif.getrow()) if idw_aktif = dw_master then idw_aktif.triggerevent(rowfocuschanged!) end ifMenyimpan DataAgar data yang telah diketikkan dapat dipanggil kembali, pemakaiharus menyimpannya terlebih dahulu sebelum keluar dari aplikasi.Untuk mengetikkan skrip penyimpanan data, ikuti langkah-langkahdi bawah ini:1. Klik dropdown event dan pilih ue_simpan.2. Ketikkan skrip di bawah ini: if not isvalid( idw_aktif ) then return if idw_aktif.update() = 1 then commit using sqlca ; else messageBox("Simpan","Penyimpanan data gagal!",StopSign!) end ifKontrol DataWindowSkrip pada kontrol DataWindow diketikkan pada event clicked,dberror, doubleclicked, rbuttondown, rowfocuschanged, danue_tombol.Event clickedKetika pemakai mengklik jendela data, kontrol DataWindow yangaktif adalah kontrol DataWindow pada jendela data tersebut (this).Tampilkan judul (title) window sesuai dengan judul jendela data,kemudian set tampilan menu edit.Untuk mengetikkan skrip event clicked kontrol DataWindow, ikutilangkah-langkah di bawah ini:1. Kontrol dw_master: Klik tab Layout. Klik kanan mouse pada kontrol DataWindow dw_master dan pilih Script. Klik dropdown event dan pilih event clicked. Ketikkan skrip di bawah ini:214
  62. 62. idw_aktif = this parent.title = is_judul + (Master) if rowcount() > 0 then m_sheet.m_edit.m_ubah.enabled = true m_sheet.m_edit.m_hapus.enabled = true m_sheet.m_edit.m_preview.enabled = true if rowcount() > 1 then if getrow() = 1 then m_sheet.m_edit.m_mundur.enabled = false m_sheet.m_edit.m_awal.enabled = false m_sheet.m_edit.m_maju.enabled = true m_sheet.m_edit.m_akhir.enabled = true elseif getrow() < rowcount() then m_sheet.m_edit.m_mundur.enabled = true m_sheet.m_edit.m_awal.enabled = true m_sheet.m_edit.m_maju.enabled = true m_sheet.m_edit.m_akhir.enabled = true elseif getrow() = rowcount() then m_sheet.m_edit.m_mundur.enabled = true m_sheet.m_edit.m_awal.enabled = true m_sheet.m_edit.m_maju.enabled = false m_sheet.m_edit.m_akhir.enabled = false end if else m_sheet.m_edit.m_mundur.enabled = false m_sheet.m_edit.m_awal.enabled = false m_sheet.m_edit.m_maju.enabled = false m_sheet.m_edit.m_akhir.enabled= false end if else m_sheet.m_edit.m_mundur.enabled = false m_sheet.m_edit.m_awal.enabled = false m_sheet.m_edit.m_maju.enabled = false m_sheet.m_edit.m_akhir.enabled = false m_sheet.m_edit.m_ubah.enabled = false m_sheet.m_edit.m_hapus.enabled = false m_sheet.m_edit.m_preview.enabled = false end if2. Kontrol dw_detail: Klik tab Layout. 215
  63. 63. Klik kanan mouse pada kontrol DataWindow dw_detail dan pilih Script. Klik dropdown event dan pilih event clicked. Ketikkan skrip di bawah ini: idw_aktif = this parent.title = is_judul + (Detail) if rowcount() > 0 then m_sheet.m_edit.m_ubah.enabled = true m_sheet.m_edit.m_hapus.enabled = true m_sheet.m_edit.m_preview.enabled = true if rowcount() > 1 then if getrow() = 1 then m_sheet.m_edit.m_mundur.enabled = false m_sheet.m_edit.m_awal.enabled = false m_sheet.m_edit.m_maju.enabled = true m_sheet.m_edit.m_akhir.enabled = true elseif getrow() < rowcount() then m_sheet.m_edit.m_mundur.enabled = true m_sheet.m_edit.m_awal.enabled = true m_sheet.m_edit.m_maju.enabled = true m_sheet.m_edit.m_akhir.enabled = true elseif getrow() = rowcount() then m_sheet.m_edit.m_mundur.enabled = true m_sheet.m_edit.m_awal.enabled = true m_sheet.m_edit.m_maju.enabled = false m_sheet.m_edit.m_akhir.enabled = false end if else m_sheet.m_edit.m_mundur.enabled = false m_sheet.m_edit.m_awal.enabled = false m_sheet.m_edit.m_maju.enabled = false m_sheet.m_edit.m_akhir.enabled= false end if else m_sheet.m_edit.m_mundur.enabled = false m_sheet.m_edit.m_awal.enabled = false m_sheet.m_edit.m_maju.enabled = false m_sheet.m_edit.m_akhir.enabled = false m_sheet.m_edit.m_ubah.enabled = false m_sheet.m_edit.m_hapus.enabled = false m_sheet.m_edit.m_preview.enabled = false216
  64. 64. end ifEvent dberrorEvent dberror digunakan untuk memanggil fungsi f_dberror yangakan menampilkan pesan kesalahan yang terjadi saat operasidatabase.Untuk mengetikkan skrip event dberror kontrol DataWindow, ikutilangkah-langkah di bawah ini:1. Kontrol dw_master: Klik tab Layout. Klik kanan mouse pada kontrol DataWindow dw_master dan pilih Script. Klik dropdown event dan pilih event dberror. Ketikkan skrip di bawah ini: return f_dberror (sqldbcode,sqlerrtext,is_judul)2. Kontrol dw_detail: Klik tab Layout. Klik kanan mouse pada kontrol DataWindow dw_detail dan pilih Script. Klik dropdown event dan pilih event dberror. Ketikkan skrip di bawah ini: return f_dberror (sqldbcode,sqlerrtext,is_judul)Event doubleclickedEvent doubleclicked digunakan untuk mengeset kontrol DataWindowaktif, menampilkan judul window sheet, dan mengubah data denganmenjalankan user event ue_ubah.Untuk mengetikkan skrip event doubleclicked kontrol DataWindow,ikuti langkah-langkah di bawah ini:1. Kontrol dw_master: Klik tab Layout. Klik kanan mouse pada kontrol DataWindow dw_master dan pilih Script. 217

×