Setelah masukkan PBL tambahan namun object nya ga muncul, ternyata harus gini

Kadang kita menerima PBL dari rekan namun berasal dari PowerBuilder versi terdahulu untuk ditambahkan pada project kita, tapi setelah kita coba tambahkan ternyata hasilnya tidak ada satu object pun yang muncul pada system tree seperti pada gambar berikut ini :

Artikel ini juga tayang di : Website Komunitas PowerBuilder Developer Indonesia

Nah umumnya kita langsung panik kok library ga ada isi object nya, Padahal seandainya kita mau memperhatikan lebih teliti tentang pesan yang ditampilkan :

Nah ayo kita migrate target nya dengan cara berikut ini :

Klik kanan pada Target lalu dari menu kita pilih Migrate

Lalu proses migrate akan di jalankan, dan jika semua berjalan dengan baik maka akan ada pesan sukses Finished Migrate of target seperti berikut :

Dan hasilnya dapat dilihat seperti berikut :

Demikian info nya, mulai hari ini yuk kita lebih teliti membaca pesan-pesan yang ditampilkan. Semoga aplikasi yang kita buat juga menampilkan pesan-pesan yang mudah di mengerti oleh user ya.

Cara Ganti warna Pie Chart Datawindow PowerBuilder

Mudah sekali untuk mengganti warna pie chart datawindow di PowerBuilder, walau hanya dapat dilakukan dengan script dengan hasil seperti berikut :

nah untuk script nya dapat dilihat dibawah ini :

mudah aja kan, nah kalo mau supaya tiap loading otomatis berubah, bisa di letakkan script seperti ini di event constructor.

referensi nya di sini ya :
http://infocenter-archive.sybase.com/help/index.jsp?topic=/com.sybase.dc37783_1150/html/dwref/dwfCCJBGJCG.htm

Membuat Timer Durasi dengan Timing Object

Membuat counter timer durasi dengan object timing

Download sample source code nya menggunakan PowerBuilder 11.5 di link bagian bawah artikel ini.

Tekniknya dilakukan dengan membuat standar class user object bertipe timing. Sehingga pada implementasinya dapat anda gunakan secara berulang (reuse) di window manapun yang anda inginkan.

Tambahkan instance variables

Tambahkan Function dengan REFERENCE variable berupa statictext control yang akan menampilkan durasi nya.

Buat Script pada event timer seperti berikut

Simpan dengan nama n_timer

Cara Implementasi nya

Cara implementasi nya dapat anda lakukan dengan menambahkan object ini di window anda, buat window object dengan window painter, lalu dari menu INSERT pilih OBJECT pilih USER OBJECT dan pilih n_timer yang akan muncul dalam non visual object list.

Buat statictext control yang akan menampilkan durasi dan commandbutton yang akan mentrigger timing object nya.

Dan inilah hasilnya.

powerbuilder timing duration object
download powerbuilder source code library pbl

Integrasi Digital Persona U are U 4500 Fingerprint dengan PowerBuilder

Ga pake lama kalo mau langsung download link nya di bawah ya

Fingerprint sudah menjadi kebutuhan umum digunakan sebagai alat verifikasi bagi individu, umum digunakan untuk login atau validasi tanpa perlu menginput password.

pada artikel ini, digunakan fingerprint reader Digital Persona U are U 4500 untuk di integrasikan dengan Powerbuilder

yang anda perlukan adalah Software Development Kit (SDK) nya, file nya sudah disertakan dalam download link.

konsep nya adalah menggunakan Dua Control OLE Object yang anda tempatkan pada Window Object dengan kegunaan terpisah, yaitu ENROLLMENT dan VERIFICATION, yang pertama digunakan untuk membaca data fingerprint yang kemudian dapat disimpan dalam database. Dan yang kedua digunakan untuk membandingkan data yang tersimpan dengan hasil pembacaan dari fingerprint readernya.

cara untuk menambahkan Control OLE Object seperti gambar berikut :

OLE object kita ambil dari pilihan tab insert control berikut, pastikan SDK sudah terinstall pada PC anda :

Data hasil pembacaan fingerprint ENROLLMENT pada contoh ini disimpan dalam suatu tabel seperti berikut :

Untuk enrollment penampakannya seperti ini :

untuk verifikasi nya seperti dibawah ini :

contoh aplikasi nya cukup untuk anda gunakan dengan memperhatikan beberapa script dan variabel serta function yang dibuat pada event yang sudah saya contohkan, misalnya

peletakan script pada event untuk enrollment :

variabel yang harus berbentuk constant

User function yang dibuat untuk memudahkan

contoh aplikasi ini sangat intensif dalam mengakses database, karena melalukan looping untuk memeriksa fingerprint yang dibaca dengan membandingkan langsung data menggunakan looping di dalam database, jika dirasa terlalu lambat anda dapat melakukan optimasi misalnya setelah mendapatkan userid semua data enrollment di load ke memory (memanfaatkan array untuk 10 jari) baru kemudian dibandingkan dengan hasil pembacaan fingerprint reader.

Demikian, semoga bermanfaat.

Catatan : PowerBuilder Versi 11.5 dan SQLAnywhere Versi 11

Source Code + DigitalPersonaUareU4500 SDK = 14MB

Cara termudah kirim SMS dan Whatsapp menggunakan SQLAnywhere dan PowerBuilder

Mungkin sudah banyak ditemui artikel yang berkaitan dengan fitur kirim-kirim SMS dan Whatsapp ataupun messenger lainnya seperti Telegram yang pernah di tuliskan dalam blog ini

baca juga : integrasi telegram chatbot dengan PowerBuilder

namun hingga post ini ditulis, belum pernah ditemukan cara yang paling mudah, setelah baca semua isi artikel ini, jika ada cara lain yang lebih mudah mohon tulis di komen ya.

Disclaimer : penulis tidak di endors oleh pemilik produk yang digunakan penulis dalam post ini, dan penggunaan teknik yang disampaikan penulis adalah tanggung jawab masing-masing

Beberapa hal yang anda perlukan antara lain :

  • PowerBuilder
  • SQL Anywhere
  • SMS dan Whatsapp API Provider

Langkah-langkah nya adalah :

  1. Mendaftar ke Provider
  2. Buat Function dalam SQLAnywhere Database untuk memanggil API tersebut
  3. Buat PowerBuilder Datawindow object yang memanggail SQLAnywhere function tadi
  4. Integrasikan Aplikasi PowerBuilder melalui datawindow query

hmm…. cuma segitu langkah nya? apa bisa lebih singkat lagi? ya udah lah, ayo kita lihat bagaimana caranya.

mari kita lihat halaman berikut nya : Daftar ke SMS dan Whatsapp API Provider

Skema PowerBuilder Deployment ke Appeon Server berdasarkan Versi

Diagram pada gambar diatas cukup menjelaskan bagaimana skema deployment PowerBuilder ke Appeon Server, berikut beberapa terminologi yang perlu di ketahui :

  1. PowerBuilder 2017 adalah versi pertama yang dikeluarkan oleh Appeon
  2. PowerServer adalah nama baru dari Appeon Server sejak versi 2017, pada versi 2016 kebawah produk server disebut sebagai Appeon Server
  3. Powerserver Toolkit adalah nama baru dari Appeon Developer sejak versi 2017 pada versi 2016 kebawah disebut sebagai Appeon Developer.

Lihat Juga Blog lain nya ya

Dari skema diatas dapat diketahui untuk dapat melakukan deployment ke server ketentuan nya adalah sebagai berikut :

  1. Untuk PowerBuilder versi 12.6 kebawah dapat menggunakan Appeon Developer 2016 untuk deployment ke Appeon Server 2016 dan tidak dapat digunakan untuk deployment ke server Versi lebih baru
  2. PowerBuilder 2017 dapat melakukan deployment ke Appeon Sever 2016 ke atas menggunakan PowerServer Toolkit dari edisi enterprise atau cloud pro
  3. PowerBuilder 2017 juga dapat melakukan deployment ke PowerServer versi 2017 keatas dengan PowerServer Toolkit
  4. PowerBuilder 2019 hanya dapat melakukan deployment ke PowerServer versi 2017 keatas

Demikian informasi ini semoga bermanfaat untuk rekan-rekan.

jangan lupa jika rekan mau mencoba melakukan deployment ke Appeon Server versi 2016 yang kami siapkan di cloud dapat register dari artikel berikut :

Cara mudah konversi data ke encoding BASE64 menggunakan SQLAnywhere pada script PowerBuilder

Cara mudah konversi data ke encoding BASE64 dengan SQLAnywhere pada script PowerBuilder

Sudah menjadi kebutuhan umum BASE64 encoding string format untuk memudahkan komunikasi data antara platform yang hanya dapat menggunakan tipe data berbentuk text atau string seperti menyematkan gambar atau PDF kedalam XML dan Json yang hanya menerima data dalam bentuk string text saja, yang paling umum adalah merubah format binary misalnya image, PDF atau file binary lainnya menjadi BASE64, sehingga memungkinkan kita mengirim image atau file lainnya dalam format XML atau Json.

Sejak PowerBuilder versi 2017 R3 sudah tersedia object untuk melakukan encoding dan decoding ke base64 secara native melalui object yang bernama coderobject :

Detail mengenai apa saja fungsi nya dapat anda lihat pada link ini ya :

https://docs.appeon.com/appeon_online_help/pb2019r2beta/objects_and_controls/ch02s07.html

Lalu bagaimana implementasi nya di PowerBuilder versi sebelum itu ? Jawabannya ada pada SQLAnywhere yang mungkin tidak banyak yang mengetahui bahwa SQLAnywhere memiliki fungsi yang dapat digunakan untuk encode dan decode base64 text format. Versi terendah yang saya lihat sudah ada fungsi ini adalah versi 9, untuk versi di bawah itu saya belum menemukan dokumentasi nya.

Berikut referensi base64_decode dan base64_encode function dari SQLAnywhere

Penggunaan di Powerbuilder perlu sedikit trik, dimana kita tidak bisa semudah memanggil dengan cara embedded SQL dibawah ini :

Apakah cara ini berhasil ?

YA

lho katanya ga mudah, kalo cuma begitu kan ya gampang dong?

                Memang mudah, TAPI ini hanya berhasil untuk ukuran file/blob maksimum 32KB yang merupakan keterbatasan powerbuilder dalam berkomunikasi dengan embedded SQL, jika anda mengirimkan text atau blob dengan ukuran lebih dari 32KB dengan cara tersebut, maka hanya akan menimbulkan error, kalaupun tidak ada error, maka data yang akan diterima database hanya 32KB pertama saja.

Jangan kuatir ya, cara yang lebih baik sehingga bisa mengirimkan ukuran file lebih dari 32KB bisa anda download dari link dibawah source code nya, berupa export window w_base64 yang bisa anda pelajari scriptnya, tinggal klik kanan lalu import ke library PBL yang anda inginkan. Metode nya adalah menggunakan embedded SQL Statemen UPDATEBLOB dan SELECTBLOB yang tersedia untuk dapat mengirimkan binary dengan berbagai ukuran lebih dari 32KB. Berikut potongan kode nya

Potongan script di atas menggunakan tabel dalam database SQLAnywhere yang digunakan seperti berikut :

Pada contoh disini, selain hasil encoding di tampilkan dalam multilineedit anda juga akan melihat bagaimana SQLAnywhere dengan statement UNLOAD menyimpan hasil query kedalam file, seperti contoh berikut

Contoh diatas juga menunjukkan contoh bagaimana kita melakukan pemanggilan SQLStatement yang tidak didukung dalam embedded SQL Powerbuilder dengan menggunakan statement EXECUTE IMMEDIATE.

Wah dalam satu contoh ini banyak hal yang bisa di pelajari ya, semoga bermanfaat.

Berikut tampilan window dengan contoh penggunakan konversi image menjadi base64

Jika anda ingin mencoba melakukan konversi file JPEG menjadi base64 dan ingin mengetahui apakah hasil nya dapat dikonversi kembali menjadi image, anda bisa gunakan online konverter dari link berikut ya :

https://onlinejpgtools.com/convert-base64-to-jpg

download exported source nya w_base64 disini :

https://drive.google.com/file/d/1xaJweCWJt1kgtWvFbAPYLIZHYObnWQtT/view?usp=sharing

cara import nya klik kanan pilih import ya :

oh ya, artikel ini juga tayang di website, komunitas PowerBuilder Developer indonesia : www.pbdev.id pada link berikut ini :

Eh, ada video nya nih di youtube jangan lupa subscribe ya

PowerBuilder 12.6 Transparent PNG lebih baik

Pada PowerBuilder versi dibawah 12.6 tampilan transparent PNG tidak begitu baik, terlihat bahwa transparency tidak berlaku untuk object lain dibawah control picture dan akan menampilkan warna backcolor window saja. object lain dibawah transparent PNG tersebut seolah menghilang.

namun ini sudah diperbaiki pada PowerBuilder versi 12.6 yang menampilkan transparent PNG dengan sempurna, seperti tampilan dibawah ini

Demikian info mengenai transparent PNG semoga info ini bisa membantu anda.

Google Map dan PowerBuilder 11.5

Berikut Google Map Sample Implementation yang di luncurkan ketika launching PB 11, resource nya susah nyari kemana-mana ga tau nya ada di harddisk sendiri. saya share disini supaya rekan-rekan mudah menemukannya.

link download nya di bawah ya

Click to Download

Perhatikan hal-hal berikut :

  1. sample ini memiliki 3 (tiga) target : PBWin32, PBWebFrom dan PBWinForm tapi share menggunakan library yang sama dengan script yang menggunakan pembeda jika running di platform yang berbeda
  2. untuk Win32 menggunakan OLE Object MS Web Browser, yang compatibility mode nya harus diubah ke versi 11 (Defaultnya adalah 7) referensi nya disini : https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/general-info/ee330730(v=vs.85)?redirectedfrom=MSDN#browser_emulation
  3. Google Map API Key silahkan di generate sendiri dan diimplementasikan pada function int_map() di window sample nya
  4. Jangan lupa baca dulu README.TXT nya ya

Membuat Sliding Window dengan MDI Frame

PART 1 : KONSEP

Saat ini sangat umum suatu aplikasi memiliki tampilan dengan menu utama tersembunyi walaupun banyak kontra yang menyatakan bahwa hamburger menu style tidak efektif untuk menunjukkan bahwa fitur-fitur dari suatu aplikasi tersembunyi dalam suatu laci (drawer). Namun disisi lain, bagi pengguna yang sudah terbiasa menggunakan aplikasi dan menggunakan nya untuk pekerjaan sehari-hari, keberadaan menu yang tersembunyi memberikan ruang yang lapang untuk menampilkan apa yang sedang dikerjakan pada satu layar penuh.

Berikut konsep Hamburger Menu style dan implementasinya dengan PowerBuilder.

  1. MDI Style, dalam konsep ini jenis window yang digunakan adalah MDI style, dipilih dengan beberapa alasan antara lain, komunikasi antar object yang mudah, dapat tampil seperti Single Page Application, dimana semua window akan muncul dalam MDI workspace, kemudian jika di deploy ke Appeon Web, MDI akan berada di dalam browser dan tidak seperti SDI window yang ditampilkan diluar browser seolah-olah hamya seperti desktop application yang dipanggil melalui browser, sedangkan jika window ditampilkan didalam browser ia akan tampak seperti halnya halaman web.
  1. Layout object, lalu untuk memudahkan memahami konsep dalam model sliding menu ini, berikut beberapa definisi yang perlu di ketahui :
    • Aplikasi menggunakan model MDI (Multiple Document Interface) sebagai Frame Window yang akan berfungsi sebagai container dan module loader
    • Sliding Menu merupakan Sheet Window yang akan di gerakkan oleh timer object
    • Semua fungsi dan cara pemanggilan akan disematkan pada window object sehingga tidak diperlukan scripting yang rumit.

Berikut gambaran struktur layout object nya :

  1. Object yang dibutuhkan, seperti gambaran konsep layout diatas maka berikut adalah daftar object yang akan digunakan dalam model framework sliding window, dengan asumsi sudah mempunya workspace (misalnya pbsliding.pbw) dan target application object (pbsliding)
NoNameJenis ObjectCatatan
1w_frameWindow object, tipe MDIFrame yang akan berfungsi sebagai container
2m_frameMenu objectWajib ada untuk window bertipe MDI
3w_sheetWindow object, tipe pop up, no border, no title barAkan digunakans sebagai ancestor
4t_slidew_sheet Timing objectDibuat sebagai window object, lebih fleksibel dibanding menggunakan timer event
5m_sheetMenu object inherit dari m_frame untuk disematkan pada w_sheetMemungkinkan untuk mengaktifkan shortcut keyboard untuk akses menu item
6u_titlebarStandar datawindow user object yangdiletakkan sebagai title bar di window sheet
7dwo_titlebarDatawindow object untuk u_titlebar 
8w_homeWindow object yang di inherit dari w_sheetw_home akan menjadi concrete object sebagai contoh modul yang dapat digunakan sebagai entri point
9w_featureWindow object  yang di inherit dari w_sheetw_feature akan menjadi concrete object sebagai contoh modul yang akan di panggil melalui sliding menu window
10w_slidingmenuWindow object yang di inherit dari w_sheetWindow ini yang akan menjadi contoh sliding menu

Pada pembuatan konsep framework ini kita akan menggunakan PowerBuilder Versi 11.5. dan berikut beberapa hal lain yang digunakan selain powerbuilder.

  1. Gambar Icon, Gambar dan ikon yang digunakan diambil dari icon library gratis yang dapat anda akses melalui https://icons8.com/ yang bisa kita download aplikasi Pichon nya
  1. Font, dan font yang digunakan diambil dari https://www.fontsquirrel.com/fonts/roboto namun perlu diingat bahwa penggunaan font tidak akan berfungsi di mobile, di web dapat difungsikan jika pc user juga menginstall font yang sama.
  1. Referensi Warna, Referensi warna diambil dari https://www.materialui.co/colors  Pada web ini anda bisa langsung klik warna yang anda inginkan, dan di clipboard anda sudah tercopy code warna nya jika anda memilih tipe code warna RGB maka yang akan dicopy dalam format RGB(xxx,xxx,xxx)

PART 2 : MEMBUAT OBJECT BAGIAN PERTAMA

Setelah memahami konsep di atas dan mengetahui object yang diperlukan, selanjutnya adalah membuat , Langkah-langkah dalam pembuatan sliding window dapat diikuti dalam uraian dibawah ini :

  1. Buat Workspace dan Target yang dibutuhkan
  1. Lalu buat object yang dibutuhkan, yang pertama adalah m_frame, object menu yang akan disematkan pada w_frame. Caranya dari menu FILE kita pilih NEW,  Pilih Tab PB Object dan pilih item MENU

Dan edit sesuai kebutuhan, dan menu bar pada m_frame (dalam hal ini adalah FILE) dibuat visible=false agar window tidak menampilkan menu seperti biasanya. Namun menu yang tersembunyi ini dapat tetap memfungsikan shortcut key nya.

  1. Kemudian kita membuat window object untuk tipe MDI yang akan dijadikan sebagai frame window, langkahnya seperti tadi dari menu FILE pilih NEW dari tab PB OBJECT pilih item WINDOW, lalu sematkan menu, pilih WindowType : MDI
  1. Buat menu m_sheet inherit dari m_frame untuk disematkan pada w_sheet yang akan dibuat berikut nya.
  1. Buat satu window object w_sheet dengan m_sheet sebagai menu, lalu pilih WindowType popup uncheck border dan uncheck titlebar, hal ini akan memungkinkan MDI Sheet tampil secara penuh tanpa title bar

Masih dalam window painter w_sheet kita tambahkan timing object dengan memilih menu insert >> object >> timing. Kemudian ganti nama nya menjadi t_slide, lalu simpan

PART 3 : MEMBUAT OBJECT BAGIAN KEDUA

  1. Buat satu datawindow object external dengan satu column title dengan tipe string(50) yang akan kita gunakan sebagai pengganti titlebar pada window sheet.

Setelah finish dan tercreate datawindow objectnya, select All control lalu hapus

Pada band detail, Buat satu compute field c_modules dengan expression : bitmap(“modules.png”) untuk menampilkan gambar hamburger icon dan satu lagi c_close dengan expression bitmap(“close.png”) untuk icon close window, lalu tempatkan column titletext untuk menampilkan judul modul.

Pada band header buat satu rectangle r_width yang akan digunakan sebagai referensi posisi dan ukuran titiletext column dan close icon computed field, dengan mengatur expression dari masing-masiing control.

Pada tab Data, klik kanan untuk ShareData lalu insert satu row untuk menampilkan row yang sama pada pada tampilan preview.

Berikut tampilan datawindow title nya

Untuk mengatur warna band detail, digunakan dw expression pada properti background color sebagai berikut :

Untuk mengatur posisi x compute field icon close c_close digunakan expression sebagai berikut :

Sedangkan untuk titletext column pengaturan width nya dibuat dalam expression seperti dibawah ini :

Sehingga dari hasil expression tersebut akan dihasilkan efek, ketika r_width kita ubah-ubah lebarnya, maka posisi titletext column dan compute c_close akan menyesuaikan diri. Ukuran lebar r_width nantinya akan diatur saat window parent nya mengalami perubahan ukuran (resize) dan isi datawindow akan mengikuti pengaturan tersebut tanpa script satu persatu.

Jangan lupa kembalikan ukuran tinggi band header menjadi 0 untuk menyembunyikan isi nya sehingga tampilan datawindow hanya detail saja yang muncul. Simpan dengan nama dwo_titlebar

  1. Kemudian kita akan membuat satu standar userobject yaitu datawindow control, yang akan digunakan sebagai container dwo_titlebar yang tadi sudah kita buat, Create new standar visual user object, pilih tipe datawindow

Isikan datawindow object nya dwo_titlebar, uncheck border dan uncheck semua scroll properties

Lalu buat satu mapped user event ue_mouseup untuk menangkap mouse up, dengan tujuan sebelum user melepas mouse (atau mengangkat jari jika menggunakan touch screen, atau setelah deploy menjadi mobile app) letakkan script disini ketimbang meletakkan nya di click event, user event ini di map ke system event ID pbm_dwnlbuttonup

Lalu simpan dengan nama u_titlebar

  1. Lalu tempatkan u_titlebar pada window w_sheet lalu simpan, anda bisa lakukan selagi berada di window painter w_sheet lakukan drag u_titlebar dari system tree, lalu ganti namanya dari dw_1 menjadi dw_title lalu jangan lupa simpan
  1. Object berikutnya di inherit dari w_sheet lalu simpan menjadi w_home
  1. Kemudian kita akan membuat window w_feature yang juga akan inherit dari w_sheet tambahkan juga text untuk membedakan nya dengan window lainnya, lalu simpan
  1. Satu object berikut nya ada w_slidingmenu yang kita inherit dari w_sheet yang digunakan sebagai menu untuk mengakses home dan feature, untuk contoh ini kita tambahkan dua command button untuk membuka window dan mengatur ukuran lebarnya mengikuti lebar menu yang kita inginkan.

Nah kita sudah membuat semua object yang dibutuhkan, selanjutnya kita akan menambahkan script yang dibutuhkan untuk membuat sliding window nya.

PART 4 : MENAMBAHKAN SCRIPT BAGIAN PERTAMA

Dalam menuliskan script untuk model sliding window ini ada beberapa kaidah yang diuraikan sebagai berikut :

  1. Sebagian besar script dituliskan pada user event
  2. Window w_frame akan menghandle fungsi umum
  3. Komunikasi antar object menggunakan message object

Selanjutnya kita akan mulai dengan menuliskan script pada masing-masing object.

  1. Application Object : pbsliding, sebagai entri point, kita akan membuka window w_frame dari event open dan menuliskan script nya seperti dibawah ini
  1. Buat instance variabel pada w_sheet sebagai berikut :

Ib_sliding akan digunakan untuk menentukan apakah window akan di animasi kan saat dibuka, ib_maximize diberikan false jika ukuran window akan ditampilkan tidak penuh (misalnya w_slidingmenu hanya ditampilkan sesuai ukuran lebarnya), kemudian simpan deklarasi instance variable ini

  1. Lalu pada object u_titlebar kita akan buat beberapa script yang dimulai dengan membuat instance variabel bertipe window dengan nama iw_parent, yang akan digunakan sebagai varibel rujukan pada window dimana ia di letakkan.

Lalu buat satu user defined function yang akan mengisi variabel tersebut, caranya buka tab Function list, lalu klik kanan pada daftar function nya pilih ADD

Isikan nama function, kemudian argumen type pilih window, argumen name isi dengan aw_parent, lalu tuliskan scriptnya seperti berikut :

Kemudian pada event yang sudah kita buat sebelumnya yaitu ue_mouseup, kita tuliskan script sebagai berikut :

Script tersebut akan menangani mouseup pada icon module untuk membuka w_slidingmenu dan icon close untuk menutup window dengan memanggil deactivate event

  1. Selanjutnya sebelum membuat script untuk w_sheet menjadi sliding window, berikut beberapa logika pemrograman yang akan dbuat :
  • Window w_sheet akan memiliki pilihan apakah akan dibuka dan ditampilkan dengan digerakkan bergeser oleh timer atau tidak. Maka akan kita buatkan instance variabel bertipe boolean IB_SLIDING yang jika TRUE maka akan dianimasikan (sliding) dan jika FALSE maka langsung dibuka
  • Sliding masuk dan keluar dapat dilakukan KE empat arah : UP, DOWN, LEFT, RIGHT, untuk ini akan dibuatkan instance variable dengan tipe string IS_DIRIN  dan ISDIROUT
  • Pada saat open w_sheet akan di tempatkan diluar workspace area (mdi_1 control )

Catatan : jika anda belum mengetahui mdi_1 adalah standar control berupa container atau client area dimana sheet window yang di buka menggunakan opensheet akan berada didalam client area mdi_1 tersebut. properti mdi_1 dapat diakses ketika window anda bertipe MDI

  • Window w_sheet akan digerakkan oleh timer ke arah yang di tentukan.
  • Jika user melakukan klik pada object lain yang mengakibatkan w_sheet memicu event deactivate maka w_sheet akan di gerakkan ke arah keluar dan di close
  • Window object w_sheet akan menerima parameter dengan tipe window yang disimpan dalam instance variabel iw_caller dan digunakan sebagai rujukan pada window pemanggil

buat satu user event ue_postopen untuk menempatkan script yang dijalankan setelah window w_sheet di open, yaitu memanggil timer t_slide yang akan menggerakkan window setelah terbuka setelah memeriksa apakah variable ib_sliding berkondisi TRUE

Selanjutnya tuliskan script pada event open sebagai berikut, menyimpan variabel window pemanggil dalam iw_caller dan memanggil script yang ada pada event ue_postopen

Berikutnya pada event deactivate kita juga akan menuliskan script sebagai berikut :

Juga pada resize event untuk mengatur lebar dw_title dan isinya, juga memeriksa apakah w_sliding menu sedang terbuka maka kita akan menutupnya

Selanjutnya pada event closequery ditambahkan script berikut ini

Lalu pada event activate tambahkan script ini untuk menutup w_slidingmenu ketika user mengaktivasi atau mengganti fokus ke window lain

Lalu tuliskan script untuk timer event pada object t_slide untuk menangani gerakan bergeser window seperti yang diinginkan, seperti ini lah scriptnya, hanya mengatur posisi x dan y saja

Dan pada control dw_title di event constructor kita tuliskan script untuk mengisi variabel iw_parent dengan script sebagai berikut :

Lalu kita extend script pada event ue_mouseup di dw_title dengan script ini

PART 5 : MENAMBAHKAN SCRIPT BAGIAN KEDUA

  1. Untuk window w_slidingmenu kita perlukan beberapa script khusus untuk perlakuan yang berbeda, antara lain dengan script dibawah ini yang mengatur tinggi window w_slidingmenu sama dengan tinggi window pemanggilnya

Kemudian pengaturan properti nya sebagai berikut, ib_maximize tidak kita centang karena window ini akan ditampilkan dengan lebar sesuai ukuran, namun tingginya akan mengikuti ukuran window yang membuka nya (lihat script diatas)

Dan sedikit script untuk merubah penampilan dengan mengganti judul window dan warnanya, dengan script berikut di object dw_title pada event constructor, selain mengganti judul window script ini juga mengganti icon pada compute field c_modules menjadi “back.png”  dan menyembunyikan compute field c_close

Oh ya, jangan lupa menulis script pada cb_home dan cb_feature untuk memanggil dan membuka window window tersebut, pada event click masing-masing command button seperti berikut :

Dengan sedikit tambahan untuk memeriksa apakah window w_home sudah dibuka, maka saat membuka w_feature, kita tutup dulu w_home nya, dan demikian sebaliknya kita tutup window w_feature jika terbuka sebelum membuka w_home

  1. Pengaturan window home, window home tidak memerlukan script karena script sudah kita tuliskan pada window ancestornya yaitu window w_sheet, dan kita hanya tinggal mengatur nilai pada instance variabel yang pada w_home muncul sebagai properties

Tambahkan script pada dw_title untuk mengganti isi column menjadi nama Window yang kita inginkan

  1. Juga pada window w_feature sama dengan w_home, kita atur properti nya

Tambahkan script pada dw_title untuk mengganti isi column menjadi nama Window yang kita inginkan

  1. Kemudian pada window w_frame kita buat script untuk membuka window w_home

PART 6 : MELIHAT HASILNYA

Nah, jika semua langkah sudah kita lakukan dengan benar, maka hasil Run dengan menekan Ctrl+R akan terlihat seperti dibawah ini :

Demikian langkah-langkah untuk membuat sliding window pada PowerBuilder, semoga bermanfaat

untuk download source code nya anda bisa klik link dibawah ini :