SlideShare une entreprise Scribd logo
1  sur  106
Télécharger pour lire hors ligne
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 dibuat
dengan bahasa pemrograman PowerBuilder dan database SQL Server 2000. Dengan hanya memasukkan
data jurnal, semua laporan keuangan seperti rugi-laba, perubahan modal, dan neraca dapat dicetak kapan
saja. 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 SQL
Server 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.
Bab 7
                                               Window



Window adalah penghubung utama antara pemakai dengan aplikasi
PowerBuilder. Window dapat menampilkan informasi, menerima
masukan informasi dari pemakai, dan merespons mouse atau
keyboard yang digerakkan.
Window adalah obyek terpisah dengan obyek lainnya yang Anda buat
dengan painter Window. Pada PowerBuilder, Anda dapat membuat
window kapan saja selama proses pengembangan aplikasi.


7.1 Tipe Window
Tipe window penting dalam membuat suatu window karena masing-
masing tipe window mempunyai fungsi yang berbeda dan
PowerBuilder akan mengeset atribut window tersebut sesuai dengan
tipe yang ditentukan. Untuk memilih tipe window, pilih salah satu
tipe window yang terdapat dalam dropdown tipe window. Tipe
window akan menetapkan hubungan dengan window lain dalam
aplikasi.
Main
Window main biasanya digunakan sebagai sheet dalam aplikasi.
Window main bisa saja berfungsi sebagai induk (parent window) dari
window child, popup, atau response.
Window main biasanya berisi sebuah menu dan/atau sebuah set dari
satu CommandButton atau lebih untuk menyajikan pilihan pada
pemakai. Tipe window ini dapat diperkecil atau diperbesar. Saat
Anda melakukan hal ini, window ini akan secara otomatis



                                                              155
mengesetnya dengan ukuran yang relatif terhadap layar dan bukan
terhadap window lain.
PopUp
Window Popup adalah sebuah tipe window yang dapat digunakan
sebagai window mengapung dan dapat ditampilkan di luar window
parent. Window popup sering digunakan untuk menyediakan
informasi tambahan atau detail yang besar dari sebuah obyek dalam
sebuah window induk.
Child
Window Child adalah sebuah window anak yang terikat dengan
sebuah window induk. Artinya, sebuah window child harus
dihubungkan dengan sebuah window induk (parent window) dan
hanya dapat ditempatkan dalam window induk dan tidak dapat
ditarik (ditempatkan) keluar window induk.
Response
Window Response adalah sebuah kotak dialog yang menerima
informasi dari pemakai. Window response yang ditampilkan
merupakan window aktif. Tidak ada window lain dalam aplikasi yang
dapat diakses sampai ada respons dari pemakai. Pemakai dapat
beralih ke window aplikasi yang lain, tetapi ketika pemakai kembali
ke aplikasi, window response tetap aktif.
Sebuah window response sama seperti window popup, bedanya
window popup tidak membutuhkan respons pemakai, sedangkan
window response membutuhkan respons pemakai. Window respons
adalah application modal, yaitu window yang memerlukan respons
sebelum melanjutkan aplikasi. Saat aplikasi membuka window
response, pemakai tidak dapat berpindah ke window yang lain
(dalam aplikasi yang sama) sebelum menutup window response
tersebut. Window response selalu menampilkan sebuah pesan dan
biasanya ada satu atau lebih CommandButton yang harus
dilaksanakan pemakai. Window ini juga sering digunakan untuk
menampilkan pesan error atau tampilan keputusan sebelum proses
dilanjutkan. Window ini tidak bisa menggunakan menu, tidak dapat
diperkecil (minimize) atau diperbesar (maximize), dan tidak dapat
digulung. Anda hanya dapat memindahkan atau menutupnya.
Gambar 7.7 adalah salah satu contoh window response.




156
MDI Frame
Window MDI (Multiple Document Interface) adalah salah satu tipe
Windows yang penting Anda ketahui. Banyak aplikasi Windows
terkenal menggunakan bentuk tampilan aplikasi MDI ini. Microsoft
Word for Windows, Microsoft Excel, dan PowerBuilder adalah contoh
aplikasi MDI. Window MDI merupakan salah satu bentuk tampilan
dari window induk. Istilah lain dari window MDI adalah MDI Frame
yang berisi satu atau lebih window anak sebagai sheet—window yang
merupakan lembaran kerja untuk menampilkan data, baik sebagai
input (lembaran kerja) maupun output (preview laporan). Dalam
Mircrosoft Word for Windows, window anak merupakan macam-
macam dokumen yang dapat diedit. Pada Excel, masing-masing
window anak ini disajikan dalam bentuk lembaran kerja
(spreadsheet).
Window MDI dapat juga berisi toolbar dan Microhelp (gunakan tipe
window MDI Frame with Microhelp).
MDI Frame with Microhelp
Pilihan lain dari tipe window adalah MDI Frame with Microhelp.
Pada window MDI Frame with Microhelp ini disediakan fasilitas untuk
menampilkan keterangan pendek pada baris status aplikasi.
Keterangan ini digunakan untuk membantu pemakai dalam
pemilihan menu dan icon menu. Hal ini akan dibahas pada bagian
pembuatan window utama dalam bab ini.


7.2 Window Pembuka
Window pembuka adalah window yang dibuka pertama kali pada
saat aplikasi dijalankan. Window ini biasa menampilkan gambar yang
aktraktif agar aplikasi yang dibuat lebih menarik. Gambar ini dapat
Anda rancang sendiri sedemikian rupa sesuai keinginan Anda.
Sebagai contoh, penulis mengikutsertakan rancangan gambar yang
disisipkan ke dalam dokumen MS Word (slide_pembuka.doc),
kemudian ditangkap (capture) dan disimpan dengan format file
gambar yang dapat digunakan pada PowerBuilder (bmp, gif, jpg,
atau format gambar lainnya).
Langkah-langkah untuk membuat window pembuka adalah sebagai
berikut:



                                                               157
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_detik

13. Klik tab Event list, klik event open, kemudian ketikkan skrip di
    bawah ini:
      f_center_w( this ) //Center window
      timer(3) //delay 3 detik

14. Klik icon Save, klik file mylibrary.pbl, ketikkan w_pembuka,
    kemudian klik OK.


7.3 Window Login
Aplikasi PowerBuilder merupakan aplikasi yang mempunyai
kemampuan yang hebat dalam menangani database dan sangat
memperhatikan keamanan aplikasi dan database yang digunakan.
Kode aslinya hanya dapat dibaca oleh PowerBuilder sendiri, begitu
pula database aslinya yang telah diberi user id dan password. Hal ini
dilakukan untuk keamanan agar database tidak dapat diakses oleh
orang-orang yang tidak berhak. Selain itu, PowerBuilder


158
memberikan fasilitas window response agar pemakai menjalankan
window ini dan memasukkan user id dan password sebelum
memasuki aplikasi.
Window Login adalah suatu window yang digunakan pemakai untuk
memasukkan user id dan password sebelum masuk ke dalam
aplikasi.


7.3.1   Pembuatan Window
Selain dari window login itu sendiri, ada beberapa obyek dan kontrol
yang harus Anda buat saat pembuatan window login.
Membuat Window Login
Untuk 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
Gambar 7.1 Kotak dialog posisi dan ukuran window

Menambah Kontrol Gambar Bar Putih
Kontrol gambar bar ini digunakan sebagai bar tempat kontrol
gambar logo perusahaan dan kontrol teks nama aplikasi yang akan
ditampilkan. Langkah–langkah untuk membuat kontrol ini adalah
sebagai 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 di
mana mouse diklik. Kontrol ini dapat dipindahkan atau dihapus.
Untuk memindahkannya, pointer (tanda tambah) berada pada
kontrol, klik kiri mouse dan tahan, pindahkan mouse ke lokasi yang
diinginkan dan lepaskan mouse. Untuk menghapus kontrol, klik
kontrol 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
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 puntih

3. Tarik kontrol p_1 ke kanan sehingga tampilan gambar menjadi
   seperti Gambar 7.4.
Menambah Kontrol Gambar Logo Perusahaan
Kontrol gambar ini digunakan sebagai tempat gambar logo
perusahaan yang akan ditampilkan. Langkah–langkah untuk membuat
kontrol ini adalah sebagai berikut:


                                                               161
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 Aplikasi
Kontrol teks aplikasi adalah kontrol teks statis yang digunakan
sebagai tempat teks yang akan menampilkan nama aplikasi di
sebelah 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 Password
Kontrol 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
4. PowerBuilder akan membuat sebuah duplikat dari kontrol yang
   dipilh tadi.
Mengatur Properti Kontrol Teks Statis
Kontrol teks statis yang dibuat telah dapat diisi dengan teks yang
diinginkan dan dapat diatur propertinya seperti ukuran huruf, nama
huruf, tebal, dan sebagainya.
Untuk mengatur properti kontrol teks statis, ikuti langkah-langkah di
bawah 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_password
dan teks Password:.




                                                                 163
st_aplikasi


                                                    st_userid

                                                    st_password




         p_1   p_2


               Gambar 7.4 Tampilan sementara window login

Kontrol SingleLineEdit
Kontrol ini digunakan sebagai tempat input atau untuk menampilkan
teks. Teks ini dapat diubah-ubah oleh pemakai.
Anda dapat membuat dua buah kontrol SingleLineEdit, yaitu untuk
input 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
Mengatur Properti Kontrol SingleLineEdit
Untuk mengatur properti SingleLineEdit, ikuti langkah-langkah di
bawah 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 CommandButton
CommandButton atau icon tombol merupakan kontrol yang
digunakan sebagai media penghubung pemakai dengan program.
Penekanan CommandButton akan menyebabkan dijalankannya suatu
tugas berdasarkan kondisi saat itu. Pengaksesan kontrol ini, seperti
mengklik mouse pada kontrol ini, menyebabkan terjadinya
perubahan gambar seolah-olah sebuah tombol ditekan dan
dilepaskan.
Untuk membuat kontrol CommandButton, caranya adalah sebagai
berikut:
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
4. Sesuaikan posisi kontrol CommandButton dengan posisi kontrol
   SingleLineEdit. Atur ukuran kontrol CommandButton seperti
   mengubah ukuran kontrol teks statis.
Mengatur Properti Kontrol CommandButton
Untuk mengatur properti CommandButton, lakukan langkah-langkah
berikut:
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 Kontrol
Jika Anda memperhatikan posisi tampilan dari beberapa kontrol
yang telah Anda buat pada window Login, ada yang terlalu
kekiri/kanan, ke atas/bawah atau beberapa kontrol yang seharusnya
mempunyai panjang sama tapi tidak sama. Untuk memperindah
tampilan kontrol-kontrol ini PowerBuilder menyediakan fasilitas
berupa 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
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 kontrol

7. 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
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 Window
Setiap kali Anda keluar dari painter window, PowerBuilder akan
menanyakan apakah window yang telah dibuat akan disimpan (Yes),
tidak (No), atau tetap berada pada layar desain untuk melanjutkan
pekerjaan (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
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 Window
Tampilan window yang telah didesain dapat dilihat dengan perintah
Preview. Namun sebelum Anda melakukan preview window login,
berikanlah kembali tanda centang pada kotak cek ControlMenu (klik
tab General, kemudian klik kotak cek ControlMenu). Hal ini
dilakukan agar setelah melakukan preview Anda dapat kembali ke
layar desain. Jika hal tidak dilakukan maka Anda tidak akan dapat
kembali ke layar desain karena saat preview dilakukan PowerBuilder
tidak menampilkan menu atau icon Close sehingga Anda harus
menutup (Close) PowerBuilder.
Untuk melakukan preview pilih menu Design | Preview dari menu
bar atau klik icon Preview pada PainterBar.
Window yang telah didesain akan tampil dan Anda dapat mencoba
mengetikkan pada kontrol sle_userid atau sle_password yang
berwarna putih seperti pada Gambar 7.6.
Jika hasil tampilan window yang Anda buat perlu diperbaiki, Anda
dapat kembali ke layar desain dengan mengklik Close window pada
pojok kanan atas.




              Gambar 7.6 Tampilan preview window login


                                                              169
Apabila tampilan window telah sesuai dengan tampilan yang Anda
inginkan, hilangkan kembali tanda centang pada kotak cek
ControlMenu, kemudian simpan window.
Menutup Window
Penutupan window dapat Anda lakukan dengan memilih menu File |
Close atau dengan mengklik icon Close.
Membuka Window
Window yang telah disimpan dapat dibuka kembali untuk diubah
atau hanya sekedar untuk menampilkannya saja. Pada window yang
telah dibuka, Anda dapat memilih menu File | Recent Objects. Klik
nama window tersebut untuk mengaktifkannya. Untuk membuka
window, 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 Login
Skrip adalah kode program dalam bahasa PowerBuilder yang akan
melakukan suatu pekerjaan saat suatu kejadian berlangsung. Apakah
program perlu memeriksa karakter yang diketikkan oleh pemakai
saat mengetikkan user id dan password program? Jika hal ini
diperlukan maka Anda harus mengetikkan skrip untuk memeriksa
karakter yang diketikkan pemakai tersebut.
Skrip SingleLineEdit
Kontrol SingleLineEdit yang telah dibuat untuk memasukkan User Id
dan Password mendukung suatu kejadian (event) jika telah terjadi
perubahan (modified) isi kontrol. Dengan adanya kejadian ini maka
kita dapat melakukan tindakan-tindakan terhadap kejadian ini.
Kejadian ini disebut dengan kejadian Modified. Skrip yang digunakan
sebagai respons dari kejadian ini diketikkan dalam kejadian ini.



170
Sebagai contoh, Anda dapat memeriksa karakter yang dimasukkan
oleh pemakai, misalnya hanya mengizinkan huruf atau angka saja.
Jika string yang diketikkan oleh pemakai tidak sah maka tampilkan
pesan Ketikkan huruf atau angka!. Untuk melakukan hal ini
diperlukan tiga buah fungsi, yaitu Isnull(), Match(), dan
Messagebox().
Untuk membuat skrip kontrol SingleLineEdit, ikuti langkah-langkah
di 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
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 if




172
Gambar 7.7 Window untuk menyisipkan properti obyek ke dalam skrip

Setelah Anda melakukan langkah-langkah di atas, ulangi untuk
memberikan skrip kontrol sle_password. Skrip sle_password
selengkapnya adalah sebagai berikut:
//Mengambil string password pada kontrol sle_password
is_password = sle_password.text
if isnull(is_password) or len(is_password) = 0 then return
if match ( is_password , "^[A-Za-z0-9]+$" ) = false then
 messagebox("Perhatian","Isi dengan huruf atau angka !")
 return
end if
cb_login.setfocus()

Skrip CommandButton Login
Skrip CommandButton login digunakan melakukan koneksi dengan
database dan masuk ke dalam aplikasi. Untuk membuat skrip
CommandButton 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
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 Batal
Skrip CommandButton batal digunakan untuk membatalkan login ke
aplikasi atau menutup window login dan kemabali ke sistem operasi.
Untuk membuat skrip CommandButton Batal, ikuti langkah-langkah
di 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
4. Ketikkan satu baris skrip di bawah ini untuk menutup window
   login.
    Halt

5. Klik icon Save untuk menyimpan perubahan.
Skrip Event Open window login
Skrip event Open pada window login fungsinya untuk menempatkan
posisi window di tengah-tengah layar dan memutuskan koneksi
database 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 Fungsi
Berikut ini adalah penjelasan penggunaan fungsi pada skrip window
login.
Isnull()
Sintaks:
Isnull(exp)

Keterangan:
Exp adalah sebuah ekpresi dapat berupa variabel atau nilai.




                                                              175
Len()
Sintaks:
Len(exp)

Keterangan:
Exp adalah sebuah ekpresi string atau blob yang ingin Anda ketahui
panjangnya.


Match()
Sintaks:
 Match(string1, string2)

Keterangan:
string1 adalah string yang akan diperiksa
string2 adalah string pembanding atau string1 sah bila merupakan
bagian 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 enumerated
yang ingin Anda tampilankan di sisi kiri kotak pesan. Adapun nilai
yang dapat Anda isi yaitu:
      Information! (default, tanda huruf i)
      StopSign! (tanda silang X)
      Exclamation! (tanda seru !)
      Question! (Tanda tanya ?)
      None! (tanpa tanda)


176
button adalah sebuah tombol (CommandButton) berupa nilai dengan
tipe 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 Ignore
default adalah nomor urut tombol yang ingin diset sebagai tombol
aktif. Nilai default dari PowerBuilder adalah 1. Sebagai contoh,
Anda ingin menampilkan pesan dengan tiga buah tombol ketika
pemakai menutup sheet di mana pemakai telah melakukan
perubahan data tetapi lupa meyimpannya, maka Anda dapat
menampilkan pesan Sudah terjadi perubahan data, simpan?, dengan
tiga buah pilihan, yaitu Yes, No, atau Cancel. Anda dapat
memberikan nilai default 1, 2, atau 3. Nilai satu adalah untuk Yes, 2
untuk No, dan 3 untuk Cancel.
Jika fungsi ini berhasil dilaksanakan maka fungsi ini akan
mengembalikan nilai integer (1, 2, atau 3) dari pemilihan tombol
dan –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)

TriggerEvent
Sintaks:
objectname.TriggerEvent ( event {, word, long} )

Keterangan:
objectname adalah nama obyek atau kontrol yang mempunyai
kejadian (event).
event adalah nilai dari kejadian yang berupa data enumerated
misalnya Clicked!, Modified!, or DoubleClicked!, Close!, dan
sebagainya.

                                                                 177
Anda dapat juga memberikan nama user event. Mengenai hal ini
akan dibahas pada bagian window sheet.
word dan long adalah tipe data yang ingin diambil dalam WordParm
dan 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 Utama
Tipe window yang digunakan untuk window utama adalah tipe
window MDI Frame atau MDI Frame with Microhelp. Pada tipe
window ini Anda dapat membuka sheet lebih dari satu sheet
sekaligus.


7.4.1   Pembuatan Window Utama
Pada prinsipnya cara pembuatan window utama sama dengan
pembuatan window login, hanya saja terdapat pebedaan tipe
window, yaitu pada window login menggunakan tipe Response dan
pada 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
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 Utama
Pada awal dijalankannya aplikasi, skrip window login memanggil
window utama. Sebelum window utama dibuka pemakai, aplikasi
mengharuskan pemakai untuk mengetikkan user id dan password
pada window login. Aplikasi tidak dapat dilanjutkan sebelum
pemakai memberikan respons dengan mengetikkan user id dan
password 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
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 terlebih
dahulu.


7.4.3    Skrip Aplikasi
Pada awal dijalankannya aplikasi, skrip aplikasi memanggil window
pembuka. 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_aplikasi


7.4.4    Menjalankan Aplikasi
Setelah Anda mengerjakan beberapa pekerjaan di atas, sekarang
Anda 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 tombol
Login dan kejadian clicked dilaksanakan karena tombol Login
bernilai default. Jika pada database yang digunakan terdapat


180
password, Anda dapat mengklik kotak isian Password untuk
mengetikkan password, kemudian mengklik tombol Login.


7.5 Window Sheet
Window sheet adalah window yang bertipe main dan digunakan
sebagai lembaran kerja, baik untuk menampilkan data (view) atau
memasukkan data (edit). Pekerjaan yang sering dilakukan pada
window sheet adalah menambah data baru, mengubah data, atau
menghapus data yang sudah ada. Perkerjaan ini termasuk pekerjaan
manipulasi database. Sebagian pekerjaan ini akan dilakukan oleh
DataWindow yang akan dibahas pada Bab 8. Sebelum DataWindow
melakukan pekerjaan ini, harus ada persiapan-persiapan agar data
yang dimanipulasi tersebut tidak salah, misalnya melakukan
pengaturan menu-menu sheet, event, serta pembuatan skripnya.


7.5.1   Pembuatan Window
Secara garis besar, window sheet terdiri dari 3 (tiga) bagian seperti
ditujukan Gambar 6.9, yaitu bagian pertama (atas) adalah bar
tempat logo perusahaan dan kotak isian untuk mencari data; bagian
kedua (sebelah kiri) adalah menu tree yang berisi jenis-jenis
pekerjaan (input data) dalam sheet; dan bagian ketiga adalah
jendela untuk menampilkan (view) data.
Jendela dibagi menjadi dua bagian seperti yang ditunjukkan
Gambar 7.9. Bagian atas adalah jendela untuk menampilkan master
dan 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
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 Sheet
Bar sheet digunakan sebagai bantalan untuk menempatkan kontrol
gambar (logo perusahaan), kontrol teks statis cari data, dan kontrol
DataWindow cari. Untuk membuat bar sheet, ikuti langkah-langkah
di 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
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
Pembuatan Kontrol TreeView
Kontrol TreeView digunakan untuk menampilkan menu tree, yaitu
menu yang berisi jenis-jenis pekerjaan (input data) dalam sheet.
Langkah-langkah untuk membuat kontrol treeview adalah sebagai
berikut:
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 Master
Kontrol DataWindow master digunakan untuk menghubungkan sheet
(window) dengan obyek DataWindow master. Langkah-langkah untuk
membuat 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 Detail
Kontrol DataWindow detail digunakan untuk menghubungkan sheet
(window) dengan obyek DataWindow detail. Langkah-langkah untuk
membuat 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
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 Pemisah
Batas pemisah adalah untuk pemisah antara jendela-jendela dalam
sheet. Batas pemisah ini ada dua buah, yang pertama (vertikal)
digunakan untuk melebarkan/mengecilkan jendela menu tree dan
jendela data ke kanan/ke kiri dan yang kedua digunakan untuk
melebarkan jendela master dan mengecilkan jendela detail atau
mengecilkan jendela master dan melebarkan jendela detail ke
atas/bawah. Anda dapat melihat contoh batas pemisah ini dalam
window w_tv_dw_link pada Examples PowerBuilder. Untuk membuat
batas 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
End If

2. 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 sheet

186
7.5.2    Pendeklarasian Variabel Instance
Ada beberapa variabel instance yang dibutuhkan window sheet
seperti 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 sheet

Untuk menmdeklarasikan variabel instance di atas, klik tab Declare
InstanceVariable pada window sheet, kemudian ketikkan skrip di
bawah ini:
datawindow idw_aktif
integer ii_keymaster, ii_keyDetail

string      is_kolMaster,is_keyMaster
string      is_dw_master,is_dw_detail,is_dwo_rpt


                                                                  187
string     is_wEdit,is_judul

integer    ii_newWidth,ii_newHeight
long       il_hiddencolor = 0
integer    ii_TebalBar     = 11
integer    ii_windowborder = 15


7.5.3     Pembuatan User Event
Jika pemakai melakukan sesuatu, misalnya mengklik icon Maju,
Mundur, Baru dan sebagainya pada window sheet, apa yang terjadi
pada program? Program akan merespons kejadian yang dilakukan
oleh pemakai. PowerBuilder sendiri tidak menyediakan event untuk
melakukan pekerjaan seperti menu sheet yang telah Anda buat di
atas. PowerBuilder memberi kesempatan kepada programmer
PowerBuilder untuk membuat user event.
Event-event yang harus dibuat sesuai dengan menu Sheet adalah
sebagai 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
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 Event



7.5.4   Pembuatan Fungsi Window
Fungsi window yang diperlukan di sini adalah fungsi window untuk
menggerakkan batas pemisah vertikal dan horisontal pada sheet
seperti yang telah disinggung pada bagian pembuatan batas pemisah


                                                                  189
di atas, yaitu fungsi wf_refreshbars, wf_resizebars, dan
wf_resizepanels. Anda dapat melihat contoh ketiga fungsi ini dalam
window w_tv_dw_link pada Examples PowerBuilder. Skrip pada
fungsi ini telah penulis modifikasi dan disesuai dengan kebutuhan
window sheet. Untuk membuat ketiga fungsi ini, langkah-langkahnya
adalah 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 1

4. 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
Return 1

5. 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 1

6. 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
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 Sheet
Pada bagian menu sheet yang telah dibahas sebelumnya, terdapat
menu untuk menggerakkan baris data pada sheet seperti Awal
(Ctrl+H, bergerak ke baris pertama), Mundur (Ctrl+N, bergerak ke
baris sebelumnya), Maju (Ctrl+J, bergerak ke baris berikutnya), dan
Akhir (bergerak ke baris akhir).
Selain menu di atas, pada sheet (termasuk window preview laporan)
juga berlaku penekanan tombol (tombol default) untuk
menggerakkan baris data, yaitu anak panah atas/bawah—
maju/mundur baris Ctrl+Home—ke baris pertama, PageUp—mundur
1 halaman, PgDn—maju 1 halaman dan Ctrl+End—ke baris akhir.


7.5.6      Skrip Window
Banyak sekali kejadian-kejadian yang terjadi pada sheet, mulai dari
kejadian sheet dibuka (open) sampai dengan sheet ditutup (Close).
Semua kejadian ini dapat digunakan untuk melakukan sesuatu
terhadap window tersebut.
Membuka Sheet
Sebelum Anda dapat memasukkan data atau menampilkan data pada
sheet, Anda harus terlebih dahulu membuka sheet tersebut. Untuk
membuka sheet, gunakan fungsi Opensheet().
Sintaks:
OpenSheet(namasheet {, tipewindow }, mdiframe {, posisi {,
susunan } } )


192
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. Untuk
mengetikkan skrip ini, caranya adalah sebagai berikut:

                                                               193
1. Klik tanda + pada nama file mylibrary.pbl
2. 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 Sheet
Setelah selesai bekerja, sebaiknya sheet harus ditutup kembali.
Untuk menutup sheet, gunakan fungsi Close() yang dilaksanakan
oleh fungsi triggerevent() melalui menu sheet.
Sintaks:
Close (namawindow)

Keterangan:
namawindow adalah nama window sebagai sheet yang dibuka
dengan fungsi Opensheet ().
TriggerEvent
Sintaks:
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
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 Resize
Sebelum window sheet ditampilkan, event ini pertama kali akan
dijalankan secara otomatis untuk mengubah tampilan window sheet
yang mengikuti resolusi monitor. Berikut ini penjelasan beberapa
pernyataan baru yang digunakan pada skrip event resize.
Saat event resize pertama kali dijalankan, Anda harus menyimpan
resolusi monitor ke variabel instance ii_newWidth dan ii_newHeight
untuk keperluan perubahan besar jendela-jendela dalam sheet.
Untuk mengetahui apakah event resize pertama kali dibuka atau
tidak, periksalah nilai variabel ii_newWidth atau ii_newHeight. Nilai
0 pada variabel ini menandakan event resize pertama kali
dijalankan.
Pekerjaan selanjutnya adalah menentukan lebar tampilan masing-
masing kontrol. Lebar tampilan window sheet adalah 100% sama
dengan nilai newWidth, yaitu lebar kontrol DataWindow dalam
satuan pixel yang telah disesuaikan secara otomatis dengan resolusi
tampilan monitor. Lebar ini dibagi tiga, yaitu untuk jendela menu
tree, batas pemisah jendela menu tree dengan jendela DataWindow
(vertikal), dan jendela DataWindow. Prosentase masing-masing
tampilan ini adalah 13% dari nilai newWidth untuk jendela menu
tree, 15 pixel untuk batas pemisah vertikal, dan ( 83% * newWidth )
- 15 pixel untuk jendela DataWindow. Lebar bar sheet adalah sama
dengan lebar window sheet.
Tinggi tampilan jendela menu tree adalah tinggi kontrol
DataWindow - (titik sumbu y kontrol p_bar + tinggi kontrol p_bar).
Titik koordinat kontrol dw_master adalah titik sumbu x berada pada
titik sumbu x menu tree ditambah dengan lebar menu tree dan
ditambah 15 pixel (lebar batas pemisah); sedangkan titik sumbu y


                                                                 195
berada pada titik sumbu y kontrol p_bar ditambah dengan tinggi
kontrol p_bar.
Besar tampilan kontrol dw_master akan berubah jika obyek kontrol
dw_detail kosong (tanpa detail). Perubahan ini dapat dilakukan
dengan memeriksa obyek kontrol dw_detail. Jika kontrol dw_detail
berisi obyek DataWindow detail dan tinggi obyek DataWindow
master lebih dari 30% dari nilai newHeight, ubah tinggi kontrol
dw_master menjadi 30% dari nilai newHeight, 15 pixel untuk batas
pemisah horisontal, dan 70% dari nilai newHeight dikurangi 15 pixel
untuk tinggi kontrol dw_detail. Titik sumbu x kontrol dw_detail
berada pada titik sumbu y kontrol dw_master ditambah dengan
tinggi kontrol dw_master ditambah 15 pixel. Tinggi kontrol
dw_detail adalah sama dengan nilai newHeight dikurangi nilai titik
sumbu y kontrol ini. Sebaliknya, jika obyek DataWindow detail tidak
ada maka tinggi kontrol dw_master sama dengan tinggi menu tree
dan tinggi kontrol dw_detail sama dengan nol (jendela detail tidak
tampil).
Tampilan selanjutnya adalah tampilan kontrol st_cari dan dw_cari.
Kontrol st_cari ditampilkan sejajar dengan titik sumbu x menu tree
dan lebarnya juga sama dengan lebar menu tree, sedangkan kontrol
dw_cari ditampilkan sejajar dengan titik sumbu x kontrol dw_master
dan lebarnya juga sama dengan lebar kontrol dw_master.
Terakhir ubah tampilan batas pemisah, yaitu pertama dengan
memindahkan kontrol st_vertikal ke titik sumbu x pada titik sumbu x
menu tree ditambah dengan lebar menu tree dan titik sumbu y pada
titik 148. Kedua, dengan memindahkan kontrol st_horizontal ke titik
sumbu x pada titik sumbu x menu tree ditambah dengan lebar menu
tree dan titik sumbu y pada titik sumbu y kontrol dw_master
ditambah dengan tinggi kontrol dw_master. Ketiga, ubah ukuran
kontrol st_ horizontal dengan lebar sama dengan kontrol dw_master
dan tinggi sama dengan ii_TebalBar, yaitu 15 pixel.
Selengkapnya, skrip event resize adalah sebagai berikut:
string ls_dw_master_tinggi

//Default tampilan
if ii_newWidth = 0 then
 ii_newWidth = newWidth
 ii_newHeight= newHeight
end if

p_bar.width   = ii_newWidth



196
tv_sheet.x = 0
tv_sheet.width       = ii_newWidth * 0.17
tv_sheet.height      = ii_newHeight - (p_bar.y + p_bar.height )

dw_master.x      = tv_sheet.x + tv_sheet.width + 15
dw_master.y     = (p_bar.y + p_bar.height)

dw_master.width     = ( ii_newWidth * 0.83 ) - 15

ls_dw_master_tinggi= dw_master.Describe(&
  "DataWindow.Detail.Height")

dw_detail.x    = dw_master.x
dw_detail.width    = dw_master.width

if is_dw_detail <> '' then

if 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.y

else
 dw_master.height = tv_sheet.height
 dw_detail.y      = (dw_master.y + dw_master.height) + 15
 dw_detail.height = 0
end if

st_cari.x         = tv_sheet.x
st_cari.width      = tv_sheet.width

dw_cari.x         = dw_master.x
dw_cari.width      = dw_master.width

// Set the color of the bars to make them invisible
st_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 Open
Event ini dijalankan secara otomatis setelah event resize. Banyak
yang dapat Anda lakukan saat event ini dijalankan, di antaranya
menampilkan menu tree dan mengubah tampilan batas pemisah.
Berikut ini penjelasan beberapa pernyataan baru yang digunakan
pada skrip event Open.



                                                                  197
Menampilkan Menu Tree
Menu tree ditampilan dengan menambah item kontrol tv_sheet
dengan 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 yang
ditempatkan pada event open.
long    ll_level1

ll_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 Pemisah
Cara mengubah tampilan batas pemisah adalah dengan mengetikkan
skrip di bawah ini:
// Set warna batas pemisah sesuai dengan warna bacground
// window sheet agar tidak kelihatan (invisible)
il_HiddenColor = BackColor //warna bacground window sheet
st_Vertical.BackColor = il_HiddenColor


198
st_horizontal.BackColor = il_HiddenColor

//Ubah ukuran batas pemisah proporsional dgn tampilan sheet
wf_ResizeBars()

//Ubah ukuran jendela proporsional dengan tampilan sheet
wf_ResizePanels()

Kotak Isian Cari Data
Agar pemakai dapat mengetikkan data yang akan dicari, Anda harus
menyediakan 1 (satu) baris kosong sebagai kotak isian mengetikan
untuk menggetikkan skrip di bawah ini:
//Hubungkan kontrol dw_cari ke database dan baris kosong
dw_cari.setTransObject(SQLCA)
dw_cari.scrolltorow(dw_cari.insertrow(0))

Pemilihan Menu Tree
Pemilihan menu tree adalah untuk menampilkan data pada jendela
master dan detail. Pemilihan menu tree akan menjalankan event
selectionchanged pada kontrol tv_sheet. Ada beberapa pekerjaan
yang harus dilakukan pada event ini, yaitu mengisi variabel
instance, mengisi nama obyek DataWindow, menghubungkan kontrol
DataWindow dengan database, memanggil data, mengambil key
master (Primary Key), mengaktifkan kontrol DataWindow master,
mengubah tampilan ukuran sheet sesuai dengan resolusi monitor dan
mengeset tampilan menu sheet.
Mengisi Variabel Instance
Variabel instance ini diisi jika menu tree yang dipilih adalah
submenu tree (1. Kelompok, 2. Subkelompok, 3. Perkiraan, Jurnal
atau Tutup Buku) yang dipilih. Jika yang dipilih bukan submenu tree
seperti Tabel Referensi atau Transaksi maka isi variabel instance
adalah isi yang terakhir. Cara memeriksa menu mana yang dipilih
adalah dengan memeriksa isi parameter newhandle treeview pada
event selectionchanged seperti skrip di bawah ini:
is_dw_detail = ''
ii_keymaster= 1
ii_keyDetail = 0
is_wdEdit = ''
idw_aktif = dw_master

choose case newhandle
 case 2
   //Menu 1.Kelompok
   is_judul = 'Tabel Referensi Kelompok'


                                                               199
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 choose

Menu sheet
Pertama kali sheet dibuka, pemilihan menu secara default adalah
menu pertama, yaitu Tabel Referensi (newhandle bernilai 1), berarti
belum ada pilihan data untuk ditampilkan. Dengan demikian
pemakai hanya dapat melakukan pemilihan menu tree dan menutup
sheet, sedangkan menu edit sheet yang lainnya dalam keadaan tidak
aktif (disable). Cara mematikan menu sheet adalah dengan skrip
seperti di bawah ini:
m_sheet.m_edit.m_buka.enabled = false
m_sheet.m_edit.m_simpan.enabled = false

m_sheet.m_edit.m_preview.enabled = false

m_sheet.m_edit.m_baru.enabled = false
m_sheet.m_edit.m_ubah.enabled = false
m_sheet.m_edit.m_hapus.enabled = false

m_sheet.m_edit.m_awal.enabled = false
m_sheet.m_edit.m_mundur.enabled = false
m_sheet.m_edit.m_maju.enabled = false
m_sheet.m_edit.m_akhir.enabled = false



200
m_sheet.m_edit.m_tutup.enabled = true

Mengisi nama obyek DataWindow
Cara mengisi obyek DataWindow adalah dengan mengisi properti
DataObject dengan string nama obyek DataWindow. Properti
DataObject untuk kontrol dw_master diisi jika terjadi perubahan isi
variabel is_dw_master, sedangkan properti DataObject untuk
kontrol dw_detail tidak. Berikut ini adalah skrip untuk mengisi
properti DataObject.
if is_dw_master <> dw_master.dataobject then
 dw_master.dataobject = is_dw_master
end if

dw_detail.dataobject   = is_dw_detail

SetTransObject()
Fungsi ini digunakan untuk menghubungkan kontrol DataWindow
dengan 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 memanggil
data dari database dan menempatkannya dalam buffer kontrol
DataWindow. Fungsi ini dijalankan dengan menjalankan user event
ue_buka.
Sintaks:
kontroldw.Retrieve ( {darftarArgumen } )




                                                               201
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 isian
cari data, set fokus pada kotak isian cari data, dan atur tampilan
menu edit. Skrip user event ue_panggil selengkapnya adalah seperti
di 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 if
else
 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 if

Mengambil KeyMaster
Keymaster adalah nama kolom master (primary key) yang diperlukan
untuk pemanggilan detail. Nama kolom ini dapat diambil dengan
fungsi describe().
Sintaks:
 kontroldw. Describe (daftar properti )




202
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 pada
urutan pertama (kolom 1) adalah sebagai berikut:
is_kolMaster = dw_master.Describe("#1.Name")

Kolom master tidak selalu berada pada urutan pertama, bergantung
pemilihan (select) yang dilakukan saat pembuatan DataWindow, bisa
saja pada urutan pertama, kedua, terakhir, dan sebagainya. Yang
perlu diketahui adalah urutan di mana kolom master (Primary Key)
tersebut ditempatkan. Dengan demikian, skrip untuk mengambil
kolom master menjadi seperti di bawah ini.
is_kolMaster = dw_master.Describe("#" + &
string( ii_keymaster ) + ".Name")

Keadaan tidak dapat diubah
Default data yang ditampilkan pada jendela data adalah pada
keadaan yang tidak dapat diubah (read only=true). Keadaan ini
dapat ditentukan dengan mengetikkan skrip di bawah ini:
dw_master.object.datawindow.readonly = true
 if is_dw_detail <> '' then
dw_detail.object.datawindow.readonly = true
end if

Mengaktifkan kontrol DataWindow
Default kontrol DataWindow yang aktif adalah kontrol DataWindow
master. Kontrol DataWindow ini dapat diaktifkan secara otomatis
setelah pemilihan menu tree dengan menjalankan event clicked
(akan dibahas pada pembahasan selanjutnya) pada kontrol
dw_master seperti skrip di bawah ini.
dw_master.triggerevent(clicked!) //Default DW aktif

atau
idw_aktif = dw_master




                                                             203
Mengubah tampilan ukuran sheet
Ukuran tampilan sheet akan disesuaikan dengan ukuran tampilan
obyek DataWindow yang telah diisi pada properti DataObject. Untuk
mengubah tampilan sheet, jalankan event resize dengan
triggerevent seperti skrip di bawah ini:
parent.triggerevent(resize!)

Event CloseQuery
Event ini dijalankan setelah event Close dijalankan. Event ini
digunakan untuk menutup query yang teleh dibuka dengan fungsi
Retrieve(). Sebelum query ditutup, Anda dapat memeriksa apakah
telah terjadi perubahan data (data sudah disimpan atau belum).
Jika pemakai telah melakukan perubahan data, Anda dapat
menampilkan pertanyaan untuk memberi kesempatan kepada
pemakai. Berikut ini penjelasan beberapa pernyataan baru.
DeletedCount ()
Fungsi ini akan mengembalikan jumlah baris yang telah ditandai
untuk dihapus dalam database.
Sintaks:
kontroldw.DeletedCount ( )

ModifiedCount()
Fungsi ini akan mengembalikan jumlah baris yang telah diubah pada
buffer utama, yaitu tabel utama yang dipilih pada Upadate
Properties.
Sintaks:
kontroldw. ModifiedCount ()

Getitem()
Fungsi ini berguna untuk mengambil data (nilai) dari buffer kontrol
DataWindow atau DataStore. Nama fungsi getitem harus disesuaikan
dengan tipe data yang akan diambil. Fungsi untuk mengambil data
bertipe numeric adalah getitemnumber(), untuk mengambil data
bertipe desimal adalah dengan getitemdacimal(), untuk mengambil
data bertipe tanggal adalah dengan getitemdate(), untuk mengambil
data bertipe tanggal jam adalah dengan getitemdatetime(), untuk



204
mengambil data bertipe jam adalah dengan getitemtime() dan untuk
mengambil 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 pada
kontrol DataWindow ke dalam buffer kontrol DataWindow. Sebelum
data pada baris aktif dalam kontrol DataWindow diambil, fungsi ini
harus dilaksanakan terlebih dahulu, jika tidak maka baris aktif
adalah baris aktif sebelumnya. Fungsi ini akan mengembalikan nilai
integer 1 bila berhasil dilaksanakan atau nilai integer -1 bila tidak
berhasil dilaksanakan.
Sintaks:
kontroldw.AcceptText()

Contoh:
//Ambil isi kolom yang telah diketikkan
ls_kode = dw_1.getitemstring(dw_1.getrow(),’pk_kode’)
//hasil null
if dw_master.AcceptText() = 1 Then
    ls_kode = dw_1.getitemstring(&
dw_master.getrow(),’kp_kode’) //hasil misalnya 0001
end if




                                                                 205
Cara untuk mengetikkan skrip event CloseQuery adalah seperti di
bawah 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 IF

Memindahkan Baris
Saat Anda berada pada sheet data, Anda dapat memindahkan baris
(record) ke baris yang diinginkan, apakah itu hanya untuk
menampilkan data atau untuk keperluan perbaikan data. Pada
umumnya yang dilakukan adalah bergerak maju atau mundur satu
baris atau bergerak ke awal/akhir baris. Hal ini dapat Anda lakukan
dengan 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
Sintaks:
kontroldw.ScrollToRow ( baris )

Keterangan:
baris adalah nomor baris yang dituju.
RowCount()
Fungsi ini digunakan untuk mengambil nomor baris terakhir atau
jumlah 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 maju
satu baris dari baris aktif.
Sintaks:
kontroldw.ScrollNextRow()

ScrollPriorRow()
Fungsi ini digunakan untuk berpindah ke baris sebelumnya atau
mundur satu baris dari baris aktif.
Sintaks:
kontroldw. ScrollPriorRow()

Cara mengetikkan skrip untuk memindahkan baris adalah sebagai
berikut:
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
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 Baru
Langkah untuk menambah data baru akan dilakukan pada window
edit sheet yang dipanggil melalui user event ue_baru. Window edit
yang dipanggil sesuai dengan window edit masing-masing jendela
data, misalnya jika data yang ditampilkan adalah data tabel
referensi kelompok maka window editnya adalah window edit
kelompok, jika data yang ditampilkan adalah data tabel referensi
subkelompok maka window editnya adalah window edit
subkelompok dan seterusnya. Pemanggilan window edit yang
berbeda-beda pada user event ue_baru, dapat dilakukan dengan
fungsi 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
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 bertipe
window. Periksa DataObject DataWindow aktif. Jika kosong,
tampilkan pesan Silakan pilih menu tree! dan pindah kembali ke
window sheet.
Jika DataObject tidak kosong, periksa DataWindow aktif. Jika
DataWindow aktif adalah master maka buka window edit master
yang disimpan dalam variabel is_wmEdit, sebaliknya jika
DataWindow aktif adalah detail maka buka window edit detail yang
disimpan dalam variabel is_wdEdit. Skrip user event ue_baru
selengkapnya adalah sebagai berikut:
window lw_edit

if idw_aktif.dataobject = '' then
 messagebox('Informasi','Silakan pilih menu tree!')
 return
else
 if idw_aktif = dw_master then
   OpenWithParm(lw_edit, "baru", is_wmEdit, this)
 else
   OpenWithParm(lw_edit, "baru", is_wdEdit, this)
 end if
end if

Pembahasan tentang window edit akan dibahas khusus pada bagian
window edit.
Mengubah Data
Mengubah data dilakukan bila ada data yang ditampilkan di layar.
Data dapat diubah dengan memanggil window edit sheet yang
dipanggil melalui user event ue_ubah. Window edit yang dipanggil
sesuai dengan window edit masing-masing jendela data seperti yang
telah dijelaskan di atas. Window edit dibuka dengan fungsi
OpenWithParm dengan mengirimkan paramater isi kolom master.
Untuk mengetikkan skrip user event ue_ubah, ikuti langkah-langkah
di bawah ini:
1. Klik dropdown event dan pilih ue_ubah.
2. Ketikkan skrip di bawah ini:


                                                               209
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 if

Menghapus Data
Adakalanya data yang telah dimasukkan ke dalam tabel (database)
harus dihapus, mungkin data tersebut salah atau sudah tidak
digunakan lagi. Berikut ini penjelasan beberapa pernyataan baru
yang digunakan.
DeleteRow()
Digunakan untuk menghapus baris. Fungsi ini akan mengembalikan
nilai integer 1 bila berhasil dilakukan atau nilai integer -1 bila tidak
berhasil dilakukan.
Sintaks:
kontroldw.DeleteRow( baris )

Keterangan:
baris adalah nomor baris yang akan dihapus.
Update()
Fungsi ini digunakan untuk mengubah tabel. Fungsi ini akan
mengembalikan nilai integer 1 bila berhasil dilakukan atau nilai
integer -1 bila tidak berhasil dilakukan. Fungsi ini secara otomatis
akan melaksanakan fungsi AcceptText().
Sintaks:
kontroldw.Update ( { accept {, resetflag } } )




210
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.
Commit
Adalah pernyataan yang digunakan untuk menyimpan secara
permanen semua perubahan yang dilakukan terhadap data sejak
diluncurkan terakhir kali.
Sintaks:
COMMIT {USING ObyekTransaksi} ;

Keterangan:
ObyekTransaksi adalah nama obyek transaksi, default-nya adalah
SQLCA
RowsMove()
Fungsi ini digunakan untuk menghapus sejumlah baris dari buffer
delete dan menyisipkannya ke kontrol DataWindow (atau DataStore)
lain, dalam hal ini kontrol DataWindow yang diedit datanya
(dw_master atau dw_detail). Fungsi RowsMove() dijalankan
bilamana penghapusan data gagal sehingga data yang telah dihapus
(dalam buffer delete) harus dikembalikan ke kontrol DataWindow
asalnya.
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
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
baris          adalah nomor baris yang diinginkan sebagai baris
               aktif.
Rollback
Pernyataan ini digunakan untuk membatalkan semua operasi
database 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
idw_aktif.selectRow(idw_aktif.getrow(),true)
      idw_aktif.setRow(idw_aktif.getrow())

      if idw_aktif = dw_master then
       idw_aktif.triggerevent(rowfocuschanged!)
      end if

Menyimpan Data
Agar data yang telah diketikkan dapat dipanggil kembali, pemakai
harus menyimpannya terlebih dahulu sebelum keluar dari aplikasi.
Untuk mengetikkan skrip penyimpanan data, ikuti langkah-langkah
di 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 if

Kontrol DataWindow
Skrip pada kontrol DataWindow diketikkan pada event clicked,
dberror, doubleclicked, rbuttondown, rowfocuschanged, dan
ue_tombol.
Event clicked
Ketika pemakai mengklik jendela data, kontrol DataWindow yang
aktif 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, ikuti
langkah-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
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 if

2. Kontrol dw_detail:
       Klik tab Layout.



                                                         215
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 = false



216
end if

Event dberror
Event dberror digunakan untuk memanggil fungsi f_dberror yang
akan menampilkan pesan kesalahan yang terjadi saat operasi
database.
Untuk mengetikkan skrip event dberror 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.
       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 doubleclicked
Event doubleclicked digunakan untuk mengeset kontrol DataWindow
aktif, menampilkan judul window sheet, dan mengubah data dengan
menjalankan 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
Klik dropdown event dan pilih event doubleclicked.
       Ketikkan skrip di bawah ini:
       idw_aktif = this
       parent.title = is_judul + ' (Master)'

       parent.triggerevent("ue_ubah")

2. Kontrol dw_detail:
       Klik tab Layout.
       Klik kanan mouse pada kontrol DataWindow dw_detail dan
       pilih Script.
       Klik dropdown event dan pilih event doubleclicked.
       Ketikkan skrip di bawah ini:
       idw_aktif = this
       parent.title = is_judul + ' (Detail)'

       parent.triggerevent("ue_ubah")

Event rowfocuschanged
Event rowfocuschanged pada kontrol dw_master digunakan untuk
memanggil data detail sesuai dengan kode master (pirmarykey),
menampilkan informasi baris pada microhelp (status line), dan
mengeset tampilan menu perpidahan baris. Event rowfocuschanged
pada kontrol dw_detail digunakan untuk menampilkan informasi
baris pada microhelp (status line) dan mengeset tampilan menu
perpidahan baris serta menampilkan pointer baris aktif (selection).
Untuk mengetikkan skrip event rowfocuschanged               kontrol
DataWindow, ikuti langkah-langkah di bawah ini:
1. Kontrol dw_master:
       Klik tab Layout.
       Klik kanan mouse pada kontrol DataWindow dw_detail dan
       pilih Script.
       Klik dropdown event dan pilih event rowfocuschanged.
       Ketikkan skrip di bawah ini:
       if this.rowcount() = 0 or this.getrow()=0 then return

       long ll_baris, ll_jml_baris


218
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI
SISTEM_INFORMASI_AKUNTANSI

Contenu connexe

Tendances

ใบความรู้ที่ 7 application paint pot
ใบความรู้ที่ 7 application paint potใบความรู้ที่ 7 application paint pot
ใบความรู้ที่ 7 application paint potNattapon
 
Visual basic
Visual basicVisual basic
Visual basicDharmik
 
Formularios en html
Formularios en htmlFormularios en html
Formularios en htmlDenisse C
 
Introduction to Eikon
Introduction to EikonIntroduction to Eikon
Introduction to Eikonisc_library
 
Configuración de SAP LSMW
Configuración de SAP LSMW Configuración de SAP LSMW
Configuración de SAP LSMW Oreka IT
 
Principais telas sap_modulo_pp_producao
Principais telas sap_modulo_pp_producaoPrincipais telas sap_modulo_pp_producao
Principais telas sap_modulo_pp_producaoWirlley Souza Cançado
 
How to create a power point presentation
How to create a power point presentationHow to create a power point presentation
How to create a power point presentationJchadwell
 
Cuaderno actividades excel v2.30.07.04
Cuaderno actividades excel v2.30.07.04Cuaderno actividades excel v2.30.07.04
Cuaderno actividades excel v2.30.07.04Cybertronic Instituto
 
Sap abap modularization interview questions
Sap abap modularization interview questionsSap abap modularization interview questions
Sap abap modularization interview questionsPradipta Mohanty
 
Manual Cmap Tools
Manual Cmap ToolsManual Cmap Tools
Manual Cmap Toolsedu140271
 
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...MasterCode.vn
 
Bài 6 Tìm hiểu LAYER - Giáo trình FPT
Bài 6 Tìm hiểu LAYER - Giáo trình FPTBài 6 Tìm hiểu LAYER - Giáo trình FPT
Bài 6 Tìm hiểu LAYER - Giáo trình FPTMasterCode.vn
 
DAY 2 - Starting in Photoshop (Images and Layers)
DAY 2 - Starting in Photoshop (Images and Layers)DAY 2 - Starting in Photoshop (Images and Layers)
DAY 2 - Starting in Photoshop (Images and Layers)Sef Cambaliza
 

Tendances (20)

ใบความรู้ที่ 7 application paint pot
ใบความรู้ที่ 7 application paint potใบความรู้ที่ 7 application paint pot
ใบความรู้ที่ 7 application paint pot
 
Visual basic 6.0
Visual basic 6.0Visual basic 6.0
Visual basic 6.0
 
Práctica calificada corel draw
Práctica calificada corel drawPráctica calificada corel draw
Práctica calificada corel draw
 
Visual basic
Visual basicVisual basic
Visual basic
 
Formularios en html
Formularios en htmlFormularios en html
Formularios en html
 
Introduction to Eikon
Introduction to EikonIntroduction to Eikon
Introduction to Eikon
 
GIMP Tutorial.pptx
GIMP Tutorial.pptxGIMP Tutorial.pptx
GIMP Tutorial.pptx
 
Configuración de SAP LSMW
Configuración de SAP LSMW Configuración de SAP LSMW
Configuración de SAP LSMW
 
Pasos para interpolacion de forma
Pasos para interpolacion de formaPasos para interpolacion de forma
Pasos para interpolacion de forma
 
Principais telas sap_modulo_pp_producao
Principais telas sap_modulo_pp_producaoPrincipais telas sap_modulo_pp_producao
Principais telas sap_modulo_pp_producao
 
All ms word 2013
All ms word 2013All ms word 2013
All ms word 2013
 
How to create a power point presentation
How to create a power point presentationHow to create a power point presentation
How to create a power point presentation
 
Cuaderno actividades excel v2.30.07.04
Cuaderno actividades excel v2.30.07.04Cuaderno actividades excel v2.30.07.04
Cuaderno actividades excel v2.30.07.04
 
Sap abap modularization interview questions
Sap abap modularization interview questionsSap abap modularization interview questions
Sap abap modularization interview questions
 
Manual Cmap Tools
Manual Cmap ToolsManual Cmap Tools
Manual Cmap Tools
 
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
Bài 3 Làm việc với vùng chọn & công cụ tạo vùng chọn trong PHOTOSHOP - Giáo t...
 
Bài 6 Tìm hiểu LAYER - Giáo trình FPT
Bài 6 Tìm hiểu LAYER - Giáo trình FPTBài 6 Tìm hiểu LAYER - Giáo trình FPT
Bài 6 Tìm hiểu LAYER - Giáo trình FPT
 
Sap scripts
Sap scriptsSap scripts
Sap scripts
 
DAY 2 - Starting in Photoshop (Images and Layers)
DAY 2 - Starting in Photoshop (Images and Layers)DAY 2 - Starting in Photoshop (Images and Layers)
DAY 2 - Starting in Photoshop (Images and Layers)
 
Práctica CorelDraw
Práctica  CorelDrawPráctica  CorelDraw
Práctica CorelDraw
 

En vedette

membuat program sederhana menggunakan power builder
membuat program sederhana menggunakan power buildermembuat program sederhana menggunakan power builder
membuat program sederhana menggunakan power builderFariszal Nova
 
dasar program berorientasi objek pada power builder
dasar program berorientasi objek pada power builderdasar program berorientasi objek pada power builder
dasar program berorientasi objek pada power builderFariszal Nova
 
Membuat Aplikasi Android Keren
Membuat Aplikasi Android KerenMembuat Aplikasi Android Keren
Membuat Aplikasi Android KerenHangga Aji Sayekti
 
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLiteCara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLitecreatorb dev
 
Tutorial Lengkap Cara Membuat Aplikasi Android Sederhana
Tutorial Lengkap Cara Membuat Aplikasi Android SederhanaTutorial Lengkap Cara Membuat Aplikasi Android Sederhana
Tutorial Lengkap Cara Membuat Aplikasi Android Sederhanacreatorb dev
 

En vedette (7)

membuat program sederhana menggunakan power builder
membuat program sederhana menggunakan power buildermembuat program sederhana menggunakan power builder
membuat program sederhana menggunakan power builder
 
dasar program berorientasi objek pada power builder
dasar program berorientasi objek pada power builderdasar program berorientasi objek pada power builder
dasar program berorientasi objek pada power builder
 
manual-power-builder
manual-power-buildermanual-power-builder
manual-power-builder
 
Membuat Aplikasi Android Keren
Membuat Aplikasi Android KerenMembuat Aplikasi Android Keren
Membuat Aplikasi Android Keren
 
Modul basis data
Modul basis dataModul basis data
Modul basis data
 
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLiteCara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
 
Tutorial Lengkap Cara Membuat Aplikasi Android Sederhana
Tutorial Lengkap Cara Membuat Aplikasi Android SederhanaTutorial Lengkap Cara Membuat Aplikasi Android Sederhana
Tutorial Lengkap Cara Membuat Aplikasi Android Sederhana
 

Similaire à SISTEM_INFORMASI_AKUNTANSI

Laporan tugas akhir
Laporan tugas akhirLaporan tugas akhir
Laporan tugas akhirahmadranddy
 
Laporan tugas akhir
Laporan tugas akhirLaporan tugas akhir
Laporan tugas akhirahmadranddy
 
Dasarpemrogramanvisualbasic
DasarpemrogramanvisualbasicDasarpemrogramanvisualbasic
Dasarpemrogramanvisualbasicdhi her
 
Dasarpemrogramanvisualbasic
DasarpemrogramanvisualbasicDasarpemrogramanvisualbasic
Dasarpemrogramanvisualbasicdhi her
 
Dasar pemrograman visual basic
Dasar pemrograman visual basicDasar pemrograman visual basic
Dasar pemrograman visual basicAlvin Setiawan
 
Dasar pemrograman visual basic
Dasar pemrograman visual basicDasar pemrograman visual basic
Dasar pemrograman visual basicOcim Nationalism
 
Modul dasar pemrograman visual basic
Modul dasar pemrograman visual basicModul dasar pemrograman visual basic
Modul dasar pemrograman visual basicfitrah ilman
 
Membuat left side menu hamburger style
Membuat left side menu hamburger styleMembuat left side menu hamburger style
Membuat left side menu hamburger stylezulmach .
 
Pemrograman visual basic
Pemrograman visual basicPemrograman visual basic
Pemrograman visual basicahmadranddy
 
Membuat Sistem Informasi Penjualan Retail dengan SQL Server dan VB 6
Membuat Sistem Informasi Penjualan Retail dengan SQL Server dan VB 6Membuat Sistem Informasi Penjualan Retail dengan SQL Server dan VB 6
Membuat Sistem Informasi Penjualan Retail dengan SQL Server dan VB 6Nurdin Al-Azies
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktoprizki adam kurniawan
 
Analisis dan Desain Objek dgn Visual FoxPro 8.0
Analisis dan Desain Objek dgn Visual FoxPro 8.0Analisis dan Desain Objek dgn Visual FoxPro 8.0
Analisis dan Desain Objek dgn Visual FoxPro 8.0Nurdin Al-Azies
 
Pengenalan Dasar Visual Basic - bagian 3
Pengenalan Dasar Visual Basic - bagian 3Pengenalan Dasar Visual Basic - bagian 3
Pengenalan Dasar Visual Basic - bagian 3Isya Ansyari
 
Pemrograman berorientasi objek lanjutan
Pemrograman berorientasi objek lanjutanPemrograman berorientasi objek lanjutan
Pemrograman berorientasi objek lanjutanTriani Valentina
 
Visual basic materi pembelajaran dasar
Visual basic materi pembelajaran dasarVisual basic materi pembelajaran dasar
Visual basic materi pembelajaran dasarmuhammad nainuridho
 
Pertemuan Ke IV.DOC
Pertemuan Ke IV.DOCPertemuan Ke IV.DOC
Pertemuan Ke IV.DOCJurnal IT
 

Similaire à SISTEM_INFORMASI_AKUNTANSI (20)

Laporan tugas akhir
Laporan tugas akhirLaporan tugas akhir
Laporan tugas akhir
 
Laporan tugas akhir
Laporan tugas akhirLaporan tugas akhir
Laporan tugas akhir
 
Dasarpemrogramanvisualbasic
DasarpemrogramanvisualbasicDasarpemrogramanvisualbasic
Dasarpemrogramanvisualbasic
 
Dasarpemrogramanvisualbasic
DasarpemrogramanvisualbasicDasarpemrogramanvisualbasic
Dasarpemrogramanvisualbasic
 
Dasar pemrograman visual basic
Dasar pemrograman visual basicDasar pemrograman visual basic
Dasar pemrograman visual basic
 
Dasar pemrograman visual basic
Dasar pemrograman visual basicDasar pemrograman visual basic
Dasar pemrograman visual basic
 
Modul dasar pemrograman visual basic
Modul dasar pemrograman visual basicModul dasar pemrograman visual basic
Modul dasar pemrograman visual basic
 
Dasar pemrograman visual basic
Dasar pemrograman visual basicDasar pemrograman visual basic
Dasar pemrograman visual basic
 
Membuat left side menu hamburger style
Membuat left side menu hamburger styleMembuat left side menu hamburger style
Membuat left side menu hamburger style
 
Pemrograman visual basic
Pemrograman visual basicPemrograman visual basic
Pemrograman visual basic
 
Membuat Sistem Informasi Penjualan Retail dengan SQL Server dan VB 6
Membuat Sistem Informasi Penjualan Retail dengan SQL Server dan VB 6Membuat Sistem Informasi Penjualan Retail dengan SQL Server dan VB 6
Membuat Sistem Informasi Penjualan Retail dengan SQL Server dan VB 6
 
Pengenalan vb
Pengenalan vbPengenalan vb
Pengenalan vb
 
[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop[PBO] Pertemuan 11 - GUI Java Desktop
[PBO] Pertemuan 11 - GUI Java Desktop
 
Vbasic access
Vbasic accessVbasic access
Vbasic access
 
Analisis dan Desain Objek dgn Visual FoxPro 8.0
Analisis dan Desain Objek dgn Visual FoxPro 8.0Analisis dan Desain Objek dgn Visual FoxPro 8.0
Analisis dan Desain Objek dgn Visual FoxPro 8.0
 
20110323 modul1 vb
20110323 modul1 vb20110323 modul1 vb
20110323 modul1 vb
 
Pengenalan Dasar Visual Basic - bagian 3
Pengenalan Dasar Visual Basic - bagian 3Pengenalan Dasar Visual Basic - bagian 3
Pengenalan Dasar Visual Basic - bagian 3
 
Pemrograman berorientasi objek lanjutan
Pemrograman berorientasi objek lanjutanPemrograman berorientasi objek lanjutan
Pemrograman berorientasi objek lanjutan
 
Visual basic materi pembelajaran dasar
Visual basic materi pembelajaran dasarVisual basic materi pembelajaran dasar
Visual basic materi pembelajaran dasar
 
Pertemuan Ke IV.DOC
Pertemuan Ke IV.DOCPertemuan Ke IV.DOC
Pertemuan Ke IV.DOC
 

Plus de Nurdin Al-Azies

Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)
Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)
Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)Nurdin Al-Azies
 
Daftar riwayat hidup Jusuf Kalla
Daftar riwayat hidup Jusuf KallaDaftar riwayat hidup Jusuf Kalla
Daftar riwayat hidup Jusuf KallaNurdin Al-Azies
 
Daftar riwayat hidup Joko Widodo
Daftar riwayat hidup Joko WidodoDaftar riwayat hidup Joko Widodo
Daftar riwayat hidup Joko WidodoNurdin Al-Azies
 
Panduan Tour Taman Safari Indonesia
Panduan Tour Taman Safari Indonesia Panduan Tour Taman Safari Indonesia
Panduan Tour Taman Safari Indonesia Nurdin Al-Azies
 
Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)
Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)
Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)Nurdin Al-Azies
 
Interpersonal skill and creativity (nurdin al azies)
Interpersonal skill and creativity (nurdin al azies)Interpersonal skill and creativity (nurdin al azies)
Interpersonal skill and creativity (nurdin al azies)Nurdin Al-Azies
 
Desain grafis ver1 2-pdf
Desain grafis ver1 2-pdfDesain grafis ver1 2-pdf
Desain grafis ver1 2-pdfNurdin Al-Azies
 
Biar ngampus tak sekedar status
Biar ngampus tak sekedar statusBiar ngampus tak sekedar status
Biar ngampus tak sekedar statusNurdin Al-Azies
 
Kreatif entreupreneur workshop
Kreatif entreupreneur workshopKreatif entreupreneur workshop
Kreatif entreupreneur workshopNurdin Al-Azies
 
Strategi Penyambutan Mahasiswa Baru UNTUK LDK
Strategi Penyambutan Mahasiswa Baru UNTUK LDKStrategi Penyambutan Mahasiswa Baru UNTUK LDK
Strategi Penyambutan Mahasiswa Baru UNTUK LDKNurdin Al-Azies
 
7 international linkages
7 international linkages7 international linkages
7 international linkagesNurdin Al-Azies
 
04 ekonomi mikro rancang bangun ekonomi islam
04 ekonomi mikro     rancang bangun ekonomi islam04 ekonomi mikro     rancang bangun ekonomi islam
04 ekonomi mikro rancang bangun ekonomi islamNurdin Al-Azies
 
03 ekonomi mikro permintaan dan penawaran
03 ekonomi mikro     permintaan dan penawaran03 ekonomi mikro     permintaan dan penawaran
03 ekonomi mikro permintaan dan penawaranNurdin Al-Azies
 
02 ekonomi mikro pendahulan tentang ekonomi mikro
02 ekonomi mikro    pendahulan tentang ekonomi mikro02 ekonomi mikro    pendahulan tentang ekonomi mikro
02 ekonomi mikro pendahulan tentang ekonomi mikroNurdin Al-Azies
 
(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )
(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )
(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )Nurdin Al-Azies
 

Plus de Nurdin Al-Azies (20)

Jadwal Piala Dunia 2014
Jadwal Piala Dunia 2014Jadwal Piala Dunia 2014
Jadwal Piala Dunia 2014
 
Visi misi prabowo-hatta
Visi misi prabowo-hattaVisi misi prabowo-hatta
Visi misi prabowo-hatta
 
Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)
Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)
Buku Studi Islam 3 (Dr. Ahmad Alim, LC. MA.)
 
Daftar riwayat hidup Jusuf Kalla
Daftar riwayat hidup Jusuf KallaDaftar riwayat hidup Jusuf Kalla
Daftar riwayat hidup Jusuf Kalla
 
Daftar riwayat hidup Joko Widodo
Daftar riwayat hidup Joko WidodoDaftar riwayat hidup Joko Widodo
Daftar riwayat hidup Joko Widodo
 
Panduan Tour Taman Safari Indonesia
Panduan Tour Taman Safari Indonesia Panduan Tour Taman Safari Indonesia
Panduan Tour Taman Safari Indonesia
 
Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)
Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)
Jadwal imsyakiyah Ramadhan 1435 H (Terbaru)
 
Brosur dan biaya
Brosur dan biayaBrosur dan biaya
Brosur dan biaya
 
Interpersonal skill and creativity (nurdin al azies)
Interpersonal skill and creativity (nurdin al azies)Interpersonal skill and creativity (nurdin al azies)
Interpersonal skill and creativity (nurdin al azies)
 
Desain grafis ver1 2-pdf
Desain grafis ver1 2-pdfDesain grafis ver1 2-pdf
Desain grafis ver1 2-pdf
 
Biar ngampus tak sekedar status
Biar ngampus tak sekedar statusBiar ngampus tak sekedar status
Biar ngampus tak sekedar status
 
Kreatif entreupreneur workshop
Kreatif entreupreneur workshopKreatif entreupreneur workshop
Kreatif entreupreneur workshop
 
Strategi Penyambutan Mahasiswa Baru UNTUK LDK
Strategi Penyambutan Mahasiswa Baru UNTUK LDKStrategi Penyambutan Mahasiswa Baru UNTUK LDK
Strategi Penyambutan Mahasiswa Baru UNTUK LDK
 
Dakwah Kreatif
Dakwah KreatifDakwah Kreatif
Dakwah Kreatif
 
Adobe Flash:
Adobe Flash: Adobe Flash:
Adobe Flash:
 
7 international linkages
7 international linkages7 international linkages
7 international linkages
 
04 ekonomi mikro rancang bangun ekonomi islam
04 ekonomi mikro     rancang bangun ekonomi islam04 ekonomi mikro     rancang bangun ekonomi islam
04 ekonomi mikro rancang bangun ekonomi islam
 
03 ekonomi mikro permintaan dan penawaran
03 ekonomi mikro     permintaan dan penawaran03 ekonomi mikro     permintaan dan penawaran
03 ekonomi mikro permintaan dan penawaran
 
02 ekonomi mikro pendahulan tentang ekonomi mikro
02 ekonomi mikro    pendahulan tentang ekonomi mikro02 ekonomi mikro    pendahulan tentang ekonomi mikro
02 ekonomi mikro pendahulan tentang ekonomi mikro
 
(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )
(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )
(KULIAH S2 UIKA) 01 ekonomi mikro (DR. H. IRWAN CH, SE,MM )
 

SISTEM_INFORMASI_AKUNTANSI

  • 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 dibuat dengan bahasa pemrograman PowerBuilder dan database SQL Server 2000. Dengan hanya memasukkan data jurnal, semua laporan keuangan seperti rugi-laba, perubahan modal, dan neraca dapat dicetak kapan saja. 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 SQL Server 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. Bab 7 Window Window adalah penghubung utama antara pemakai dengan aplikasi PowerBuilder. Window dapat menampilkan informasi, menerima masukan informasi dari pemakai, dan merespons mouse atau keyboard yang digerakkan. Window adalah obyek terpisah dengan obyek lainnya yang Anda buat dengan painter Window. Pada PowerBuilder, Anda dapat membuat window kapan saja selama proses pengembangan aplikasi. 7.1 Tipe Window Tipe window penting dalam membuat suatu window karena masing- masing tipe window mempunyai fungsi yang berbeda dan PowerBuilder akan mengeset atribut window tersebut sesuai dengan tipe yang ditentukan. Untuk memilih tipe window, pilih salah satu tipe window yang terdapat dalam dropdown tipe window. Tipe window akan menetapkan hubungan dengan window lain dalam aplikasi. Main Window main biasanya digunakan sebagai sheet dalam aplikasi. Window main bisa saja berfungsi sebagai induk (parent window) dari window child, popup, atau response. Window main biasanya berisi sebuah menu dan/atau sebuah set dari satu CommandButton atau lebih untuk menyajikan pilihan pada pemakai. Tipe window ini dapat diperkecil atau diperbesar. Saat Anda melakukan hal ini, window ini akan secara otomatis 155
  • 3. mengesetnya dengan ukuran yang relatif terhadap layar dan bukan terhadap window lain. PopUp Window Popup adalah sebuah tipe window yang dapat digunakan sebagai window mengapung dan dapat ditampilkan di luar window parent. Window popup sering digunakan untuk menyediakan informasi tambahan atau detail yang besar dari sebuah obyek dalam sebuah window induk. Child Window Child adalah sebuah window anak yang terikat dengan sebuah window induk. Artinya, sebuah window child harus dihubungkan dengan sebuah window induk (parent window) dan hanya dapat ditempatkan dalam window induk dan tidak dapat ditarik (ditempatkan) keluar window induk. Response Window Response adalah sebuah kotak dialog yang menerima informasi dari pemakai. Window response yang ditampilkan merupakan window aktif. Tidak ada window lain dalam aplikasi yang dapat diakses sampai ada respons dari pemakai. Pemakai dapat beralih ke window aplikasi yang lain, tetapi ketika pemakai kembali ke aplikasi, window response tetap aktif. Sebuah window response sama seperti window popup, bedanya window popup tidak membutuhkan respons pemakai, sedangkan window response membutuhkan respons pemakai. Window respons adalah application modal, yaitu window yang memerlukan respons sebelum melanjutkan aplikasi. Saat aplikasi membuka window response, pemakai tidak dapat berpindah ke window yang lain (dalam aplikasi yang sama) sebelum menutup window response tersebut. Window response selalu menampilkan sebuah pesan dan biasanya ada satu atau lebih CommandButton yang harus dilaksanakan pemakai. Window ini juga sering digunakan untuk menampilkan pesan error atau tampilan keputusan sebelum proses dilanjutkan. Window ini tidak bisa menggunakan menu, tidak dapat diperkecil (minimize) atau diperbesar (maximize), dan tidak dapat digulung. Anda hanya dapat memindahkan atau menutupnya. Gambar 7.7 adalah salah satu contoh window response. 156
  • 4. MDI Frame Window MDI (Multiple Document Interface) adalah salah satu tipe Windows yang penting Anda ketahui. Banyak aplikasi Windows terkenal menggunakan bentuk tampilan aplikasi MDI ini. Microsoft Word for Windows, Microsoft Excel, dan PowerBuilder adalah contoh aplikasi MDI. Window MDI merupakan salah satu bentuk tampilan dari window induk. Istilah lain dari window MDI adalah MDI Frame yang berisi satu atau lebih window anak sebagai sheet—window yang merupakan lembaran kerja untuk menampilkan data, baik sebagai input (lembaran kerja) maupun output (preview laporan). Dalam Mircrosoft Word for Windows, window anak merupakan macam- macam dokumen yang dapat diedit. Pada Excel, masing-masing window anak ini disajikan dalam bentuk lembaran kerja (spreadsheet). Window MDI dapat juga berisi toolbar dan Microhelp (gunakan tipe window MDI Frame with Microhelp). MDI Frame with Microhelp Pilihan lain dari tipe window adalah MDI Frame with Microhelp. Pada window MDI Frame with Microhelp ini disediakan fasilitas untuk menampilkan keterangan pendek pada baris status aplikasi. Keterangan ini digunakan untuk membantu pemakai dalam pemilihan menu dan icon menu. Hal ini akan dibahas pada bagian pembuatan window utama dalam bab ini. 7.2 Window Pembuka Window pembuka adalah window yang dibuka pertama kali pada saat aplikasi dijalankan. Window ini biasa menampilkan gambar yang aktraktif agar aplikasi yang dibuat lebih menarik. Gambar ini dapat Anda rancang sendiri sedemikian rupa sesuai keinginan Anda. Sebagai contoh, penulis mengikutsertakan rancangan gambar yang disisipkan ke dalam dokumen MS Word (slide_pembuka.doc), kemudian ditangkap (capture) dan disimpan dengan format file gambar yang dapat digunakan pada PowerBuilder (bmp, gif, jpg, atau format gambar lainnya). Langkah-langkah untuk membuat window pembuka adalah sebagai berikut: 157
  • 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_detik 13. Klik tab Event list, klik event open, kemudian ketikkan skrip di bawah ini: f_center_w( this ) //Center window timer(3) //delay 3 detik 14. Klik icon Save, klik file mylibrary.pbl, ketikkan w_pembuka, kemudian klik OK. 7.3 Window Login Aplikasi PowerBuilder merupakan aplikasi yang mempunyai kemampuan yang hebat dalam menangani database dan sangat memperhatikan keamanan aplikasi dan database yang digunakan. Kode aslinya hanya dapat dibaca oleh PowerBuilder sendiri, begitu pula database aslinya yang telah diberi user id dan password. Hal ini dilakukan untuk keamanan agar database tidak dapat diakses oleh orang-orang yang tidak berhak. Selain itu, PowerBuilder 158
  • 6. memberikan fasilitas window response agar pemakai menjalankan window ini dan memasukkan user id dan password sebelum memasuki aplikasi. Window Login adalah suatu window yang digunakan pemakai untuk memasukkan user id dan password sebelum masuk ke dalam aplikasi. 7.3.1 Pembuatan Window Selain dari window login itu sendiri, ada beberapa obyek dan kontrol yang harus Anda buat saat pembuatan window login. Membuat Window Login Untuk 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. Gambar 7.1 Kotak dialog posisi dan ukuran window Menambah Kontrol Gambar Bar Putih Kontrol gambar bar ini digunakan sebagai bar tempat kontrol gambar logo perusahaan dan kontrol teks nama aplikasi yang akan ditampilkan. Langkah–langkah untuk membuat kontrol ini adalah sebagai 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 di mana mouse diklik. Kontrol ini dapat dipindahkan atau dihapus. Untuk memindahkannya, pointer (tanda tambah) berada pada kontrol, klik kiri mouse dan tahan, pindahkan mouse ke lokasi yang diinginkan dan lepaskan mouse. Untuk menghapus kontrol, klik kontrol 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. 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 puntih 3. Tarik kontrol p_1 ke kanan sehingga tampilan gambar menjadi seperti Gambar 7.4. Menambah Kontrol Gambar Logo Perusahaan Kontrol gambar ini digunakan sebagai tempat gambar logo perusahaan yang akan ditampilkan. Langkah–langkah untuk membuat kontrol ini adalah sebagai berikut: 161
  • 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 Aplikasi Kontrol teks aplikasi adalah kontrol teks statis yang digunakan sebagai tempat teks yang akan menampilkan nama aplikasi di sebelah 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 Password Kontrol 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. 4. PowerBuilder akan membuat sebuah duplikat dari kontrol yang dipilh tadi. Mengatur Properti Kontrol Teks Statis Kontrol teks statis yang dibuat telah dapat diisi dengan teks yang diinginkan dan dapat diatur propertinya seperti ukuran huruf, nama huruf, tebal, dan sebagainya. Untuk mengatur properti kontrol teks statis, ikuti langkah-langkah di bawah 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_password dan teks Password:. 163
  • 11. st_aplikasi st_userid st_password p_1 p_2 Gambar 7.4 Tampilan sementara window login Kontrol SingleLineEdit Kontrol ini digunakan sebagai tempat input atau untuk menampilkan teks. Teks ini dapat diubah-ubah oleh pemakai. Anda dapat membuat dua buah kontrol SingleLineEdit, yaitu untuk input 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. Mengatur Properti Kontrol SingleLineEdit Untuk mengatur properti SingleLineEdit, ikuti langkah-langkah di bawah 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 CommandButton CommandButton atau icon tombol merupakan kontrol yang digunakan sebagai media penghubung pemakai dengan program. Penekanan CommandButton akan menyebabkan dijalankannya suatu tugas berdasarkan kondisi saat itu. Pengaksesan kontrol ini, seperti mengklik mouse pada kontrol ini, menyebabkan terjadinya perubahan gambar seolah-olah sebuah tombol ditekan dan dilepaskan. Untuk membuat kontrol CommandButton, caranya adalah sebagai berikut: 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. 4. Sesuaikan posisi kontrol CommandButton dengan posisi kontrol SingleLineEdit. Atur ukuran kontrol CommandButton seperti mengubah ukuran kontrol teks statis. Mengatur Properti Kontrol CommandButton Untuk mengatur properti CommandButton, lakukan langkah-langkah berikut: 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 Kontrol Jika Anda memperhatikan posisi tampilan dari beberapa kontrol yang telah Anda buat pada window Login, ada yang terlalu kekiri/kanan, ke atas/bawah atau beberapa kontrol yang seharusnya mempunyai panjang sama tapi tidak sama. Untuk memperindah tampilan kontrol-kontrol ini PowerBuilder menyediakan fasilitas berupa 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. 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 kontrol 7. 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. 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 Window Setiap kali Anda keluar dari painter window, PowerBuilder akan menanyakan apakah window yang telah dibuat akan disimpan (Yes), tidak (No), atau tetap berada pada layar desain untuk melanjutkan pekerjaan (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. 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 Window Tampilan window yang telah didesain dapat dilihat dengan perintah Preview. Namun sebelum Anda melakukan preview window login, berikanlah kembali tanda centang pada kotak cek ControlMenu (klik tab General, kemudian klik kotak cek ControlMenu). Hal ini dilakukan agar setelah melakukan preview Anda dapat kembali ke layar desain. Jika hal tidak dilakukan maka Anda tidak akan dapat kembali ke layar desain karena saat preview dilakukan PowerBuilder tidak menampilkan menu atau icon Close sehingga Anda harus menutup (Close) PowerBuilder. Untuk melakukan preview pilih menu Design | Preview dari menu bar atau klik icon Preview pada PainterBar. Window yang telah didesain akan tampil dan Anda dapat mencoba mengetikkan pada kontrol sle_userid atau sle_password yang berwarna putih seperti pada Gambar 7.6. Jika hasil tampilan window yang Anda buat perlu diperbaiki, Anda dapat kembali ke layar desain dengan mengklik Close window pada pojok kanan atas. Gambar 7.6 Tampilan preview window login 169
  • 17. Apabila tampilan window telah sesuai dengan tampilan yang Anda inginkan, hilangkan kembali tanda centang pada kotak cek ControlMenu, kemudian simpan window. Menutup Window Penutupan window dapat Anda lakukan dengan memilih menu File | Close atau dengan mengklik icon Close. Membuka Window Window yang telah disimpan dapat dibuka kembali untuk diubah atau hanya sekedar untuk menampilkannya saja. Pada window yang telah dibuka, Anda dapat memilih menu File | Recent Objects. Klik nama window tersebut untuk mengaktifkannya. Untuk membuka window, 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 Login Skrip adalah kode program dalam bahasa PowerBuilder yang akan melakukan suatu pekerjaan saat suatu kejadian berlangsung. Apakah program perlu memeriksa karakter yang diketikkan oleh pemakai saat mengetikkan user id dan password program? Jika hal ini diperlukan maka Anda harus mengetikkan skrip untuk memeriksa karakter yang diketikkan pemakai tersebut. Skrip SingleLineEdit Kontrol SingleLineEdit yang telah dibuat untuk memasukkan User Id dan Password mendukung suatu kejadian (event) jika telah terjadi perubahan (modified) isi kontrol. Dengan adanya kejadian ini maka kita dapat melakukan tindakan-tindakan terhadap kejadian ini. Kejadian ini disebut dengan kejadian Modified. Skrip yang digunakan sebagai respons dari kejadian ini diketikkan dalam kejadian ini. 170
  • 18. Sebagai contoh, Anda dapat memeriksa karakter yang dimasukkan oleh pemakai, misalnya hanya mengizinkan huruf atau angka saja. Jika string yang diketikkan oleh pemakai tidak sah maka tampilkan pesan Ketikkan huruf atau angka!. Untuk melakukan hal ini diperlukan tiga buah fungsi, yaitu Isnull(), Match(), dan Messagebox(). Untuk membuat skrip kontrol SingleLineEdit, ikuti langkah-langkah di 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. 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 if 172
  • 20. Gambar 7.7 Window untuk menyisipkan properti obyek ke dalam skrip Setelah Anda melakukan langkah-langkah di atas, ulangi untuk memberikan skrip kontrol sle_password. Skrip sle_password selengkapnya adalah sebagai berikut: //Mengambil string password pada kontrol sle_password is_password = sle_password.text if isnull(is_password) or len(is_password) = 0 then return if match ( is_password , "^[A-Za-z0-9]+$" ) = false then messagebox("Perhatian","Isi dengan huruf atau angka !") return end if cb_login.setfocus() Skrip CommandButton Login Skrip CommandButton login digunakan melakukan koneksi dengan database dan masuk ke dalam aplikasi. Untuk membuat skrip CommandButton 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. 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 Batal Skrip CommandButton batal digunakan untuk membatalkan login ke aplikasi atau menutup window login dan kemabali ke sistem operasi. Untuk membuat skrip CommandButton Batal, ikuti langkah-langkah di 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. 4. Ketikkan satu baris skrip di bawah ini untuk menutup window login. Halt 5. Klik icon Save untuk menyimpan perubahan. Skrip Event Open window login Skrip event Open pada window login fungsinya untuk menempatkan posisi window di tengah-tengah layar dan memutuskan koneksi database 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 Fungsi Berikut ini adalah penjelasan penggunaan fungsi pada skrip window login. Isnull() Sintaks: Isnull(exp) Keterangan: Exp adalah sebuah ekpresi dapat berupa variabel atau nilai. 175
  • 23. Len() Sintaks: Len(exp) Keterangan: Exp adalah sebuah ekpresi string atau blob yang ingin Anda ketahui panjangnya. Match() Sintaks: Match(string1, string2) Keterangan: string1 adalah string yang akan diperiksa string2 adalah string pembanding atau string1 sah bila merupakan bagian 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 enumerated yang ingin Anda tampilankan di sisi kiri kotak pesan. Adapun nilai yang dapat Anda isi yaitu: Information! (default, tanda huruf i) StopSign! (tanda silang X) Exclamation! (tanda seru !) Question! (Tanda tanya ?) None! (tanpa tanda) 176
  • 24. button adalah sebuah tombol (CommandButton) berupa nilai dengan tipe 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 Ignore default adalah nomor urut tombol yang ingin diset sebagai tombol aktif. Nilai default dari PowerBuilder adalah 1. Sebagai contoh, Anda ingin menampilkan pesan dengan tiga buah tombol ketika pemakai menutup sheet di mana pemakai telah melakukan perubahan data tetapi lupa meyimpannya, maka Anda dapat menampilkan pesan Sudah terjadi perubahan data, simpan?, dengan tiga buah pilihan, yaitu Yes, No, atau Cancel. Anda dapat memberikan nilai default 1, 2, atau 3. Nilai satu adalah untuk Yes, 2 untuk No, dan 3 untuk Cancel. Jika fungsi ini berhasil dilaksanakan maka fungsi ini akan mengembalikan nilai integer (1, 2, atau 3) dari pemilihan tombol dan –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) TriggerEvent Sintaks: objectname.TriggerEvent ( event {, word, long} ) Keterangan: objectname adalah nama obyek atau kontrol yang mempunyai kejadian (event). event adalah nilai dari kejadian yang berupa data enumerated misalnya Clicked!, Modified!, or DoubleClicked!, Close!, dan sebagainya. 177
  • 25. Anda dapat juga memberikan nama user event. Mengenai hal ini akan dibahas pada bagian window sheet. word dan long adalah tipe data yang ingin diambil dalam WordParm dan 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 Utama Tipe window yang digunakan untuk window utama adalah tipe window MDI Frame atau MDI Frame with Microhelp. Pada tipe window ini Anda dapat membuka sheet lebih dari satu sheet sekaligus. 7.4.1 Pembuatan Window Utama Pada prinsipnya cara pembuatan window utama sama dengan pembuatan window login, hanya saja terdapat pebedaan tipe window, yaitu pada window login menggunakan tipe Response dan pada 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. 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 Utama Pada awal dijalankannya aplikasi, skrip window login memanggil window utama. Sebelum window utama dibuka pemakai, aplikasi mengharuskan pemakai untuk mengetikkan user id dan password pada window login. Aplikasi tidak dapat dilanjutkan sebelum pemakai memberikan respons dengan mengetikkan user id dan password 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. 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 terlebih dahulu. 7.4.3 Skrip Aplikasi Pada awal dijalankannya aplikasi, skrip aplikasi memanggil window pembuka. 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_aplikasi 7.4.4 Menjalankan Aplikasi Setelah Anda mengerjakan beberapa pekerjaan di atas, sekarang Anda 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 tombol Login dan kejadian clicked dilaksanakan karena tombol Login bernilai default. Jika pada database yang digunakan terdapat 180
  • 28. password, Anda dapat mengklik kotak isian Password untuk mengetikkan password, kemudian mengklik tombol Login. 7.5 Window Sheet Window sheet adalah window yang bertipe main dan digunakan sebagai lembaran kerja, baik untuk menampilkan data (view) atau memasukkan data (edit). Pekerjaan yang sering dilakukan pada window sheet adalah menambah data baru, mengubah data, atau menghapus data yang sudah ada. Perkerjaan ini termasuk pekerjaan manipulasi database. Sebagian pekerjaan ini akan dilakukan oleh DataWindow yang akan dibahas pada Bab 8. Sebelum DataWindow melakukan pekerjaan ini, harus ada persiapan-persiapan agar data yang dimanipulasi tersebut tidak salah, misalnya melakukan pengaturan menu-menu sheet, event, serta pembuatan skripnya. 7.5.1 Pembuatan Window Secara garis besar, window sheet terdiri dari 3 (tiga) bagian seperti ditujukan Gambar 6.9, yaitu bagian pertama (atas) adalah bar tempat logo perusahaan dan kotak isian untuk mencari data; bagian kedua (sebelah kiri) adalah menu tree yang berisi jenis-jenis pekerjaan (input data) dalam sheet; dan bagian ketiga adalah jendela untuk menampilkan (view) data. Jendela dibagi menjadi dua bagian seperti yang ditunjukkan Gambar 7.9. Bagian atas adalah jendela untuk menampilkan master dan 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. 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 Sheet Bar sheet digunakan sebagai bantalan untuk menempatkan kontrol gambar (logo perusahaan), kontrol teks statis cari data, dan kontrol DataWindow cari. Untuk membuat bar sheet, ikuti langkah-langkah di 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. 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. Pembuatan Kontrol TreeView Kontrol TreeView digunakan untuk menampilkan menu tree, yaitu menu yang berisi jenis-jenis pekerjaan (input data) dalam sheet. Langkah-langkah untuk membuat kontrol treeview adalah sebagai berikut: 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 Master Kontrol DataWindow master digunakan untuk menghubungkan sheet (window) dengan obyek DataWindow master. Langkah-langkah untuk membuat 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 Detail Kontrol DataWindow detail digunakan untuk menghubungkan sheet (window) dengan obyek DataWindow detail. Langkah-langkah untuk membuat 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. 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 Pemisah Batas pemisah adalah untuk pemisah antara jendela-jendela dalam sheet. Batas pemisah ini ada dua buah, yang pertama (vertikal) digunakan untuk melebarkan/mengecilkan jendela menu tree dan jendela data ke kanan/ke kiri dan yang kedua digunakan untuk melebarkan jendela master dan mengecilkan jendela detail atau mengecilkan jendela master dan melebarkan jendela detail ke atas/bawah. Anda dapat melihat contoh batas pemisah ini dalam window w_tv_dw_link pada Examples PowerBuilder. Untuk membuat batas 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. End If 2. 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 sheet 186
  • 34. 7.5.2 Pendeklarasian Variabel Instance Ada beberapa variabel instance yang dibutuhkan window sheet seperti 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 sheet Untuk menmdeklarasikan variabel instance di atas, klik tab Declare InstanceVariable pada window sheet, kemudian ketikkan skrip di bawah ini: datawindow idw_aktif integer ii_keymaster, ii_keyDetail string is_kolMaster,is_keyMaster string is_dw_master,is_dw_detail,is_dwo_rpt 187
  • 35. string is_wEdit,is_judul integer ii_newWidth,ii_newHeight long il_hiddencolor = 0 integer ii_TebalBar = 11 integer ii_windowborder = 15 7.5.3 Pembuatan User Event Jika pemakai melakukan sesuatu, misalnya mengklik icon Maju, Mundur, Baru dan sebagainya pada window sheet, apa yang terjadi pada program? Program akan merespons kejadian yang dilakukan oleh pemakai. PowerBuilder sendiri tidak menyediakan event untuk melakukan pekerjaan seperti menu sheet yang telah Anda buat di atas. PowerBuilder memberi kesempatan kepada programmer PowerBuilder untuk membuat user event. Event-event yang harus dibuat sesuai dengan menu Sheet adalah sebagai 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. 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 Event 7.5.4 Pembuatan Fungsi Window Fungsi window yang diperlukan di sini adalah fungsi window untuk menggerakkan batas pemisah vertikal dan horisontal pada sheet seperti yang telah disinggung pada bagian pembuatan batas pemisah 189
  • 37. di atas, yaitu fungsi wf_refreshbars, wf_resizebars, dan wf_resizepanels. Anda dapat melihat contoh ketiga fungsi ini dalam window w_tv_dw_link pada Examples PowerBuilder. Skrip pada fungsi ini telah penulis modifikasi dan disesuai dengan kebutuhan window sheet. Untuk membuat ketiga fungsi ini, langkah-langkahnya adalah 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 1 4. 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. Return 1 5. 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 1 6. 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. 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 Sheet Pada bagian menu sheet yang telah dibahas sebelumnya, terdapat menu untuk menggerakkan baris data pada sheet seperti Awal (Ctrl+H, bergerak ke baris pertama), Mundur (Ctrl+N, bergerak ke baris sebelumnya), Maju (Ctrl+J, bergerak ke baris berikutnya), dan Akhir (bergerak ke baris akhir). Selain menu di atas, pada sheet (termasuk window preview laporan) juga berlaku penekanan tombol (tombol default) untuk menggerakkan baris data, yaitu anak panah atas/bawah— maju/mundur baris Ctrl+Home—ke baris pertama, PageUp—mundur 1 halaman, PgDn—maju 1 halaman dan Ctrl+End—ke baris akhir. 7.5.6 Skrip Window Banyak sekali kejadian-kejadian yang terjadi pada sheet, mulai dari kejadian sheet dibuka (open) sampai dengan sheet ditutup (Close). Semua kejadian ini dapat digunakan untuk melakukan sesuatu terhadap window tersebut. Membuka Sheet Sebelum Anda dapat memasukkan data atau menampilkan data pada sheet, Anda harus terlebih dahulu membuka sheet tersebut. Untuk membuka sheet, gunakan fungsi Opensheet(). Sintaks: OpenSheet(namasheet {, tipewindow }, mdiframe {, posisi {, susunan } } ) 192
  • 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. Untuk mengetikkan skrip ini, caranya adalah sebagai berikut: 193
  • 41. 1. Klik tanda + pada nama file mylibrary.pbl 2. 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 Sheet Setelah selesai bekerja, sebaiknya sheet harus ditutup kembali. Untuk menutup sheet, gunakan fungsi Close() yang dilaksanakan oleh fungsi triggerevent() melalui menu sheet. Sintaks: Close (namawindow) Keterangan: namawindow adalah nama window sebagai sheet yang dibuka dengan fungsi Opensheet (). TriggerEvent Sintaks: 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. 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 Resize Sebelum window sheet ditampilkan, event ini pertama kali akan dijalankan secara otomatis untuk mengubah tampilan window sheet yang mengikuti resolusi monitor. Berikut ini penjelasan beberapa pernyataan baru yang digunakan pada skrip event resize. Saat event resize pertama kali dijalankan, Anda harus menyimpan resolusi monitor ke variabel instance ii_newWidth dan ii_newHeight untuk keperluan perubahan besar jendela-jendela dalam sheet. Untuk mengetahui apakah event resize pertama kali dibuka atau tidak, periksalah nilai variabel ii_newWidth atau ii_newHeight. Nilai 0 pada variabel ini menandakan event resize pertama kali dijalankan. Pekerjaan selanjutnya adalah menentukan lebar tampilan masing- masing kontrol. Lebar tampilan window sheet adalah 100% sama dengan nilai newWidth, yaitu lebar kontrol DataWindow dalam satuan pixel yang telah disesuaikan secara otomatis dengan resolusi tampilan monitor. Lebar ini dibagi tiga, yaitu untuk jendela menu tree, batas pemisah jendela menu tree dengan jendela DataWindow (vertikal), dan jendela DataWindow. Prosentase masing-masing tampilan ini adalah 13% dari nilai newWidth untuk jendela menu tree, 15 pixel untuk batas pemisah vertikal, dan ( 83% * newWidth ) - 15 pixel untuk jendela DataWindow. Lebar bar sheet adalah sama dengan lebar window sheet. Tinggi tampilan jendela menu tree adalah tinggi kontrol DataWindow - (titik sumbu y kontrol p_bar + tinggi kontrol p_bar). Titik koordinat kontrol dw_master adalah titik sumbu x berada pada titik sumbu x menu tree ditambah dengan lebar menu tree dan ditambah 15 pixel (lebar batas pemisah); sedangkan titik sumbu y 195
  • 43. berada pada titik sumbu y kontrol p_bar ditambah dengan tinggi kontrol p_bar. Besar tampilan kontrol dw_master akan berubah jika obyek kontrol dw_detail kosong (tanpa detail). Perubahan ini dapat dilakukan dengan memeriksa obyek kontrol dw_detail. Jika kontrol dw_detail berisi obyek DataWindow detail dan tinggi obyek DataWindow master lebih dari 30% dari nilai newHeight, ubah tinggi kontrol dw_master menjadi 30% dari nilai newHeight, 15 pixel untuk batas pemisah horisontal, dan 70% dari nilai newHeight dikurangi 15 pixel untuk tinggi kontrol dw_detail. Titik sumbu x kontrol dw_detail berada pada titik sumbu y kontrol dw_master ditambah dengan tinggi kontrol dw_master ditambah 15 pixel. Tinggi kontrol dw_detail adalah sama dengan nilai newHeight dikurangi nilai titik sumbu y kontrol ini. Sebaliknya, jika obyek DataWindow detail tidak ada maka tinggi kontrol dw_master sama dengan tinggi menu tree dan tinggi kontrol dw_detail sama dengan nol (jendela detail tidak tampil). Tampilan selanjutnya adalah tampilan kontrol st_cari dan dw_cari. Kontrol st_cari ditampilkan sejajar dengan titik sumbu x menu tree dan lebarnya juga sama dengan lebar menu tree, sedangkan kontrol dw_cari ditampilkan sejajar dengan titik sumbu x kontrol dw_master dan lebarnya juga sama dengan lebar kontrol dw_master. Terakhir ubah tampilan batas pemisah, yaitu pertama dengan memindahkan kontrol st_vertikal ke titik sumbu x pada titik sumbu x menu tree ditambah dengan lebar menu tree dan titik sumbu y pada titik 148. Kedua, dengan memindahkan kontrol st_horizontal ke titik sumbu x pada titik sumbu x menu tree ditambah dengan lebar menu tree dan titik sumbu y pada titik sumbu y kontrol dw_master ditambah dengan tinggi kontrol dw_master. Ketiga, ubah ukuran kontrol st_ horizontal dengan lebar sama dengan kontrol dw_master dan tinggi sama dengan ii_TebalBar, yaitu 15 pixel. Selengkapnya, skrip event resize adalah sebagai berikut: string ls_dw_master_tinggi //Default tampilan if ii_newWidth = 0 then ii_newWidth = newWidth ii_newHeight= newHeight end if p_bar.width = ii_newWidth 196
  • 44. tv_sheet.x = 0 tv_sheet.width = ii_newWidth * 0.17 tv_sheet.height = ii_newHeight - (p_bar.y + p_bar.height ) dw_master.x = tv_sheet.x + tv_sheet.width + 15 dw_master.y = (p_bar.y + p_bar.height) dw_master.width = ( ii_newWidth * 0.83 ) - 15 ls_dw_master_tinggi= dw_master.Describe(& "DataWindow.Detail.Height") dw_detail.x = dw_master.x dw_detail.width = dw_master.width if is_dw_detail <> '' then if 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.y else dw_master.height = tv_sheet.height dw_detail.y = (dw_master.y + dw_master.height) + 15 dw_detail.height = 0 end if st_cari.x = tv_sheet.x st_cari.width = tv_sheet.width dw_cari.x = dw_master.x dw_cari.width = dw_master.width // Set the color of the bars to make them invisible st_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 Open Event ini dijalankan secara otomatis setelah event resize. Banyak yang dapat Anda lakukan saat event ini dijalankan, di antaranya menampilkan menu tree dan mengubah tampilan batas pemisah. Berikut ini penjelasan beberapa pernyataan baru yang digunakan pada skrip event Open. 197
  • 45. Menampilkan Menu Tree Menu tree ditampilan dengan menambah item kontrol tv_sheet dengan 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 yang ditempatkan pada event open. long ll_level1 ll_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 Pemisah Cara mengubah tampilan batas pemisah adalah dengan mengetikkan skrip di bawah ini: // Set warna batas pemisah sesuai dengan warna bacground // window sheet agar tidak kelihatan (invisible) il_HiddenColor = BackColor //warna bacground window sheet st_Vertical.BackColor = il_HiddenColor 198
  • 46. st_horizontal.BackColor = il_HiddenColor //Ubah ukuran batas pemisah proporsional dgn tampilan sheet wf_ResizeBars() //Ubah ukuran jendela proporsional dengan tampilan sheet wf_ResizePanels() Kotak Isian Cari Data Agar pemakai dapat mengetikkan data yang akan dicari, Anda harus menyediakan 1 (satu) baris kosong sebagai kotak isian mengetikan untuk menggetikkan skrip di bawah ini: //Hubungkan kontrol dw_cari ke database dan baris kosong dw_cari.setTransObject(SQLCA) dw_cari.scrolltorow(dw_cari.insertrow(0)) Pemilihan Menu Tree Pemilihan menu tree adalah untuk menampilkan data pada jendela master dan detail. Pemilihan menu tree akan menjalankan event selectionchanged pada kontrol tv_sheet. Ada beberapa pekerjaan yang harus dilakukan pada event ini, yaitu mengisi variabel instance, mengisi nama obyek DataWindow, menghubungkan kontrol DataWindow dengan database, memanggil data, mengambil key master (Primary Key), mengaktifkan kontrol DataWindow master, mengubah tampilan ukuran sheet sesuai dengan resolusi monitor dan mengeset tampilan menu sheet. Mengisi Variabel Instance Variabel instance ini diisi jika menu tree yang dipilih adalah submenu tree (1. Kelompok, 2. Subkelompok, 3. Perkiraan, Jurnal atau Tutup Buku) yang dipilih. Jika yang dipilih bukan submenu tree seperti Tabel Referensi atau Transaksi maka isi variabel instance adalah isi yang terakhir. Cara memeriksa menu mana yang dipilih adalah dengan memeriksa isi parameter newhandle treeview pada event selectionchanged seperti skrip di bawah ini: is_dw_detail = '' ii_keymaster= 1 ii_keyDetail = 0 is_wdEdit = '' idw_aktif = dw_master choose case newhandle case 2 //Menu 1.Kelompok is_judul = 'Tabel Referensi Kelompok' 199
  • 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 choose Menu sheet Pertama kali sheet dibuka, pemilihan menu secara default adalah menu pertama, yaitu Tabel Referensi (newhandle bernilai 1), berarti belum ada pilihan data untuk ditampilkan. Dengan demikian pemakai hanya dapat melakukan pemilihan menu tree dan menutup sheet, sedangkan menu edit sheet yang lainnya dalam keadaan tidak aktif (disable). Cara mematikan menu sheet adalah dengan skrip seperti di bawah ini: m_sheet.m_edit.m_buka.enabled = false m_sheet.m_edit.m_simpan.enabled = false m_sheet.m_edit.m_preview.enabled = false m_sheet.m_edit.m_baru.enabled = false m_sheet.m_edit.m_ubah.enabled = false m_sheet.m_edit.m_hapus.enabled = false m_sheet.m_edit.m_awal.enabled = false m_sheet.m_edit.m_mundur.enabled = false m_sheet.m_edit.m_maju.enabled = false m_sheet.m_edit.m_akhir.enabled = false 200
  • 48. m_sheet.m_edit.m_tutup.enabled = true Mengisi nama obyek DataWindow Cara mengisi obyek DataWindow adalah dengan mengisi properti DataObject dengan string nama obyek DataWindow. Properti DataObject untuk kontrol dw_master diisi jika terjadi perubahan isi variabel is_dw_master, sedangkan properti DataObject untuk kontrol dw_detail tidak. Berikut ini adalah skrip untuk mengisi properti DataObject. if is_dw_master <> dw_master.dataobject then dw_master.dataobject = is_dw_master end if dw_detail.dataobject = is_dw_detail SetTransObject() Fungsi ini digunakan untuk menghubungkan kontrol DataWindow dengan 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 memanggil data dari database dan menempatkannya dalam buffer kontrol DataWindow. Fungsi ini dijalankan dengan menjalankan user event ue_buka. Sintaks: kontroldw.Retrieve ( {darftarArgumen } ) 201
  • 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 isian cari data, set fokus pada kotak isian cari data, dan atur tampilan menu edit. Skrip user event ue_panggil selengkapnya adalah seperti di 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 if else 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 if Mengambil KeyMaster Keymaster adalah nama kolom master (primary key) yang diperlukan untuk pemanggilan detail. Nama kolom ini dapat diambil dengan fungsi describe(). Sintaks: kontroldw. Describe (daftar properti ) 202
  • 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 pada urutan pertama (kolom 1) adalah sebagai berikut: is_kolMaster = dw_master.Describe("#1.Name") Kolom master tidak selalu berada pada urutan pertama, bergantung pemilihan (select) yang dilakukan saat pembuatan DataWindow, bisa saja pada urutan pertama, kedua, terakhir, dan sebagainya. Yang perlu diketahui adalah urutan di mana kolom master (Primary Key) tersebut ditempatkan. Dengan demikian, skrip untuk mengambil kolom master menjadi seperti di bawah ini. is_kolMaster = dw_master.Describe("#" + & string( ii_keymaster ) + ".Name") Keadaan tidak dapat diubah Default data yang ditampilkan pada jendela data adalah pada keadaan yang tidak dapat diubah (read only=true). Keadaan ini dapat ditentukan dengan mengetikkan skrip di bawah ini: dw_master.object.datawindow.readonly = true if is_dw_detail <> '' then dw_detail.object.datawindow.readonly = true end if Mengaktifkan kontrol DataWindow Default kontrol DataWindow yang aktif adalah kontrol DataWindow master. Kontrol DataWindow ini dapat diaktifkan secara otomatis setelah pemilihan menu tree dengan menjalankan event clicked (akan dibahas pada pembahasan selanjutnya) pada kontrol dw_master seperti skrip di bawah ini. dw_master.triggerevent(clicked!) //Default DW aktif atau idw_aktif = dw_master 203
  • 51. Mengubah tampilan ukuran sheet Ukuran tampilan sheet akan disesuaikan dengan ukuran tampilan obyek DataWindow yang telah diisi pada properti DataObject. Untuk mengubah tampilan sheet, jalankan event resize dengan triggerevent seperti skrip di bawah ini: parent.triggerevent(resize!) Event CloseQuery Event ini dijalankan setelah event Close dijalankan. Event ini digunakan untuk menutup query yang teleh dibuka dengan fungsi Retrieve(). Sebelum query ditutup, Anda dapat memeriksa apakah telah terjadi perubahan data (data sudah disimpan atau belum). Jika pemakai telah melakukan perubahan data, Anda dapat menampilkan pertanyaan untuk memberi kesempatan kepada pemakai. Berikut ini penjelasan beberapa pernyataan baru. DeletedCount () Fungsi ini akan mengembalikan jumlah baris yang telah ditandai untuk dihapus dalam database. Sintaks: kontroldw.DeletedCount ( ) ModifiedCount() Fungsi ini akan mengembalikan jumlah baris yang telah diubah pada buffer utama, yaitu tabel utama yang dipilih pada Upadate Properties. Sintaks: kontroldw. ModifiedCount () Getitem() Fungsi ini berguna untuk mengambil data (nilai) dari buffer kontrol DataWindow atau DataStore. Nama fungsi getitem harus disesuaikan dengan tipe data yang akan diambil. Fungsi untuk mengambil data bertipe numeric adalah getitemnumber(), untuk mengambil data bertipe desimal adalah dengan getitemdacimal(), untuk mengambil data bertipe tanggal adalah dengan getitemdate(), untuk mengambil data bertipe tanggal jam adalah dengan getitemdatetime(), untuk 204
  • 52. mengambil data bertipe jam adalah dengan getitemtime() dan untuk mengambil 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 pada kontrol DataWindow ke dalam buffer kontrol DataWindow. Sebelum data pada baris aktif dalam kontrol DataWindow diambil, fungsi ini harus dilaksanakan terlebih dahulu, jika tidak maka baris aktif adalah baris aktif sebelumnya. Fungsi ini akan mengembalikan nilai integer 1 bila berhasil dilaksanakan atau nilai integer -1 bila tidak berhasil dilaksanakan. Sintaks: kontroldw.AcceptText() Contoh: //Ambil isi kolom yang telah diketikkan ls_kode = dw_1.getitemstring(dw_1.getrow(),’pk_kode’) //hasil null if dw_master.AcceptText() = 1 Then ls_kode = dw_1.getitemstring(& dw_master.getrow(),’kp_kode’) //hasil misalnya 0001 end if 205
  • 53. Cara untuk mengetikkan skrip event CloseQuery adalah seperti di bawah 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 IF Memindahkan Baris Saat Anda berada pada sheet data, Anda dapat memindahkan baris (record) ke baris yang diinginkan, apakah itu hanya untuk menampilkan data atau untuk keperluan perbaikan data. Pada umumnya yang dilakukan adalah bergerak maju atau mundur satu baris atau bergerak ke awal/akhir baris. Hal ini dapat Anda lakukan dengan 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. Sintaks: kontroldw.ScrollToRow ( baris ) Keterangan: baris adalah nomor baris yang dituju. RowCount() Fungsi ini digunakan untuk mengambil nomor baris terakhir atau jumlah 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 maju satu baris dari baris aktif. Sintaks: kontroldw.ScrollNextRow() ScrollPriorRow() Fungsi ini digunakan untuk berpindah ke baris sebelumnya atau mundur satu baris dari baris aktif. Sintaks: kontroldw. ScrollPriorRow() Cara mengetikkan skrip untuk memindahkan baris adalah sebagai berikut: 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. 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 Baru Langkah untuk menambah data baru akan dilakukan pada window edit sheet yang dipanggil melalui user event ue_baru. Window edit yang dipanggil sesuai dengan window edit masing-masing jendela data, misalnya jika data yang ditampilkan adalah data tabel referensi kelompok maka window editnya adalah window edit kelompok, jika data yang ditampilkan adalah data tabel referensi subkelompok maka window editnya adalah window edit subkelompok dan seterusnya. Pemanggilan window edit yang berbeda-beda pada user event ue_baru, dapat dilakukan dengan fungsi 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. 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 bertipe window. Periksa DataObject DataWindow aktif. Jika kosong, tampilkan pesan Silakan pilih menu tree! dan pindah kembali ke window sheet. Jika DataObject tidak kosong, periksa DataWindow aktif. Jika DataWindow aktif adalah master maka buka window edit master yang disimpan dalam variabel is_wmEdit, sebaliknya jika DataWindow aktif adalah detail maka buka window edit detail yang disimpan dalam variabel is_wdEdit. Skrip user event ue_baru selengkapnya adalah sebagai berikut: window lw_edit if idw_aktif.dataobject = '' then messagebox('Informasi','Silakan pilih menu tree!') return else if idw_aktif = dw_master then OpenWithParm(lw_edit, "baru", is_wmEdit, this) else OpenWithParm(lw_edit, "baru", is_wdEdit, this) end if end if Pembahasan tentang window edit akan dibahas khusus pada bagian window edit. Mengubah Data Mengubah data dilakukan bila ada data yang ditampilkan di layar. Data dapat diubah dengan memanggil window edit sheet yang dipanggil melalui user event ue_ubah. Window edit yang dipanggil sesuai dengan window edit masing-masing jendela data seperti yang telah dijelaskan di atas. Window edit dibuka dengan fungsi OpenWithParm dengan mengirimkan paramater isi kolom master. Untuk mengetikkan skrip user event ue_ubah, ikuti langkah-langkah di bawah ini: 1. Klik dropdown event dan pilih ue_ubah. 2. Ketikkan skrip di bawah ini: 209
  • 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 if Menghapus Data Adakalanya data yang telah dimasukkan ke dalam tabel (database) harus dihapus, mungkin data tersebut salah atau sudah tidak digunakan lagi. Berikut ini penjelasan beberapa pernyataan baru yang digunakan. DeleteRow() Digunakan untuk menghapus baris. Fungsi ini akan mengembalikan nilai integer 1 bila berhasil dilakukan atau nilai integer -1 bila tidak berhasil dilakukan. Sintaks: kontroldw.DeleteRow( baris ) Keterangan: baris adalah nomor baris yang akan dihapus. Update() Fungsi ini digunakan untuk mengubah tabel. Fungsi ini akan mengembalikan nilai integer 1 bila berhasil dilakukan atau nilai integer -1 bila tidak berhasil dilakukan. Fungsi ini secara otomatis akan melaksanakan fungsi AcceptText(). Sintaks: kontroldw.Update ( { accept {, resetflag } } ) 210
  • 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. Commit Adalah pernyataan yang digunakan untuk menyimpan secara permanen semua perubahan yang dilakukan terhadap data sejak diluncurkan terakhir kali. Sintaks: COMMIT {USING ObyekTransaksi} ; Keterangan: ObyekTransaksi adalah nama obyek transaksi, default-nya adalah SQLCA RowsMove() Fungsi ini digunakan untuk menghapus sejumlah baris dari buffer delete dan menyisipkannya ke kontrol DataWindow (atau DataStore) lain, dalam hal ini kontrol DataWindow yang diedit datanya (dw_master atau dw_detail). Fungsi RowsMove() dijalankan bilamana penghapusan data gagal sehingga data yang telah dihapus (dalam buffer delete) harus dikembalikan ke kontrol DataWindow asalnya. 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. 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. baris adalah nomor baris yang diinginkan sebagai baris aktif. Rollback Pernyataan ini digunakan untuk membatalkan semua operasi database 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. idw_aktif.selectRow(idw_aktif.getrow(),true) idw_aktif.setRow(idw_aktif.getrow()) if idw_aktif = dw_master then idw_aktif.triggerevent(rowfocuschanged!) end if Menyimpan Data Agar data yang telah diketikkan dapat dipanggil kembali, pemakai harus menyimpannya terlebih dahulu sebelum keluar dari aplikasi. Untuk mengetikkan skrip penyimpanan data, ikuti langkah-langkah di 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 if Kontrol DataWindow Skrip pada kontrol DataWindow diketikkan pada event clicked, dberror, doubleclicked, rbuttondown, rowfocuschanged, dan ue_tombol. Event clicked Ketika pemakai mengklik jendela data, kontrol DataWindow yang aktif 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, ikuti langkah-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. 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 if 2. Kontrol dw_detail: Klik tab Layout. 215
  • 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 = false 216
  • 64. end if Event dberror Event dberror digunakan untuk memanggil fungsi f_dberror yang akan menampilkan pesan kesalahan yang terjadi saat operasi database. Untuk mengetikkan skrip event dberror 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. 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 doubleclicked Event doubleclicked digunakan untuk mengeset kontrol DataWindow aktif, menampilkan judul window sheet, dan mengubah data dengan menjalankan 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
  • 65. Klik dropdown event dan pilih event doubleclicked. Ketikkan skrip di bawah ini: idw_aktif = this parent.title = is_judul + ' (Master)' parent.triggerevent("ue_ubah") 2. Kontrol dw_detail: Klik tab Layout. Klik kanan mouse pada kontrol DataWindow dw_detail dan pilih Script. Klik dropdown event dan pilih event doubleclicked. Ketikkan skrip di bawah ini: idw_aktif = this parent.title = is_judul + ' (Detail)' parent.triggerevent("ue_ubah") Event rowfocuschanged Event rowfocuschanged pada kontrol dw_master digunakan untuk memanggil data detail sesuai dengan kode master (pirmarykey), menampilkan informasi baris pada microhelp (status line), dan mengeset tampilan menu perpidahan baris. Event rowfocuschanged pada kontrol dw_detail digunakan untuk menampilkan informasi baris pada microhelp (status line) dan mengeset tampilan menu perpidahan baris serta menampilkan pointer baris aktif (selection). Untuk mengetikkan skrip event rowfocuschanged kontrol DataWindow, ikuti langkah-langkah di bawah ini: 1. Kontrol dw_master: Klik tab Layout. Klik kanan mouse pada kontrol DataWindow dw_detail dan pilih Script. Klik dropdown event dan pilih event rowfocuschanged. Ketikkan skrip di bawah ini: if this.rowcount() = 0 or this.getrow()=0 then return long ll_baris, ll_jml_baris 218