Selasa, 18 Mei 2010

Membuat Aplikasi GL dengan Powerbuilder 9

http://www.4shared.com/office/hsVrwShH/membuat_aplikasi_gl_dengan_pow.html?

Tips: Export Blob Ke Image Power Builder

Artikel kali ini akan memberi contoh bagaimana memanggil kembali blob dari dalam database dan menampilkan di pictue control maupun meng-export kembali menjadi file gambar.
Blob Emp_id_pic
SELECTBLOB Image
INTO :Emp_id_pic
FROM dba.t_image
WHERE “index image” = :iindex
USING SQLCA ;
integer li_FileNum, loops
long flen
li_FileNum = FileOpen(sfilename,StreamMode!, Write!, Shared!, Replace!)
SetPointer(HourGlass!)
flen = Len(Emp_id_pic)
IF flen > 32765 THEN

IF Mod(flen, 32765) = 0 THEN
loops = flen/32765
ELSE
loops = (flen/32765) + 1
END IF
ELSE
loops = 1
END IF
Selanjutnya untuk meng-export kedalam file gambar dapat digunakan baris perintah berikut:
FileWritex(li_FileNum, Emp_id_pic,loops*32765) untuk PB 10.0 ke atas
FileWrite(li_FileNum, Emp_id_pic). Untuk PB 9.0 dan diakhiri dengan menutup file gambar dengan FileClose(li_FileNum)
File library / PBL dapat anda download disini. Selamat mencoba. Catatan: fungsi dalam library ini menggunakan 2 parameter yaitu sfilename bertipe string untuk namafile yang ingin kita import dan iindex bertipe integer merupakan index dari file ( bisa juga yang lain misalnya NIP atau NIM )

Sumber : http://aryodarmo.blogspot.com/2009/01/tips-export-blob-ke-image-power-builder.html

Dasar atau konsep Power Builder

Power Builder adalah sebuah development tool dengan dasar atau konsep pemrograman berorientasi objek atau Object Oriented Programming (OOP) yang memiliki karakteristik Encapsulation, Inheritance, dan Polymorphism. OOP adalah konsep yang umum dan telah di adopsi oleh banyak bahasa pemrograman modern seperti C++, Java, VBScript dan sebagainya. Teknik pemrograman pada OOP adalah bersifat modular, Berbeda dengan teknik pemrograman konvensional yang sifatnya struktural, pada OOP, sebuah modul program dipandang sebagai sebuah objek.
Encapsulation adalah karakteristik dan perilaku yang berkaitan dengan kemandirian sebuah objek. Analogi dengan makhluk hidup, sebuah objek memiliki karakteristik dan perilaku. Sebagai contoh, karakteristik yang dimiliki objek manusia adalah warna kulit, tinggi badan, berat badan, kegemaran, tingkat kecerdasan dan sebagainya. Sebagai objek yang aktif, seorang manusia berinteraksi dengan lingkungannya dengan cara beraktifitas dan merespon keadaan sekelilingnya. Dalam OOP karakteristik di istilahkan sebagai Atribut atau Properti. Perilaku diistilahkan sebagai Metode. Metode dibedakan menjadi Event dan Function.
Event adalah suatu kejadian yang dialami objek tersebut, misalnya pada contoh manusia adalah merasa lapar, sakit atau terkejut. Sedangkan Fungsi adalah tindakan yang bisa dilakukan sebuah objek, misalnya berjalan, tidur, makan dan seterusnya. Biasanya fungsi dilakukan ketika ada event yang diterima. Semua karakteristik dan perilaku tersebut dibungkus akan membentuk wujud manusia yang utuh. Properti dan Metode yang berbeda dalam keadaan terbungkus itu dikenal dengan istilah Encapsulation.

Sebuah objek adalah sebuah modul yang mandiri, artinya ia tidak memiliki ketergantungan dengan objek lain atau program utama. Dengan demikian, sebuah objek yang digunakan pada sebuah aplikasi dan dapat juga digunakan pada aplikasi lain. Agar sebuah program dapat berinterakasi dengan sebuah objek, maka kode program tersebut harus memanggil metode yang ada di dalam objek yang bersangkutan. Metode identik dengan fungsi atau event yang mengandung sebuah atau beberapa parameter. Jadi dalam hal ini sebuah program dapat mengirimkan sebuah nilai ke dalam parameter sebuah metode. Objek yang bersangkutan menerima parameter tersebut dan menjalankan aksinya. Karena kode program di dalam objek berinteraksi dengan parameter dan bukan variabel lokal atau global dari program yang memangilnya, maka objek itu mempertahankan kemandiriannya.

Istilah Inheritance memacu pada penurunan sifat sebuah objek pada objek lain. sebagai contoh, objek manusia di turunkan dari objek bernama primata karena objek ini mempunyai karakteristik yang lebih umum, yaitu makhluk hidup yang menyusui, mempunyai empat angota tubuh, bertulang belakang dan sebagainya. Istilah untuk objek turunan adalah descendent, sedangkan objek penurun atau pendahulunya adalah ancestor.
Polymorphism adalah perilaku yang berbeda-beda dari sebuah ancestor dan pada desendent-nya. Sebagai contoh kita gunakan lagi objek manusia dan kera yang masing-masing di turunkan dari objek primata yang sama. Apabila kita memanggil metode “makan”, maka kera akan mengulurkan tangannya dan memasukan makanan ke dalam mulutnya kemudian mengunyah dengan cepat-cepat. Sedangkan, jika metode yang sama di panggil dari objek manusia, maka ia akan menggerakkan tangannya untuk menyendok makanan, dan memasukkan ke dalam mulut kemudian mengunyah perlahan-lahan sambil menikmati rasanya. Jadi jelas disini bahwa kedua objek tersebut mempunyai perilaku yang berbeda untuk metode “makan”.

Sabtu, 20 Maret 2010

Cara mendapatkan Nomor Serial DISK


Pertama, Buat definisi dari fungsi API di global external function:

Function Boolean GetVolumeInformationA( &
ref String ls_Rootpath, &
ref String ls_volumnename, &
Ulong lul_VolumeNameSize, ref Ulong lul_VolumeSerialNumber, &
ref Ulong lul_MaximumComponentLength, &
ref Ulong lul_FileSystemFlags, &
ref String ls_FileSystemNameBuffer, &
Ulong lul_FileSystemNameSize &
) Library "Kernel32.dll"
 

Kedua, Buat script pemanggil dibawah ini

String ls_Rootpath, ls_volumnename
ls_Rootpath = "C:" // tentukan untuk mendapatkan nomor seri hard drive
ls_volumnename = Space(256) // mengalokasikan cukup ruang, yang sama di bawah ini
 
Ulong lul_VolumeNameSize
lul_VolumeNameSize = 256
Ulong lul_VolumeSerialNumber, lul_MaximumComponentLength, lul_FileSystemFlags
lul_MaximumComponentLength = 256
String ls_FileSystemNameBuffer
ls_FileSystemNameBuffer = space(256)
Ulong lul_FileSystemNameSize
lul_FileSystemNameSize = 256

boolean lb_rtn
lb_rtn = False

lb_rtn = GetVolumeInformationA(ls_Rootpath, ls_volumnename, lul_VolumeNameSize, &
lul_VolumeSerialNumber, lul_MaximumComponentLength, lul_FileSystemFlags, &
ls_FileSystemNameBuffer, lul_FileSystemNameSize)

if lb_rtn = false then
 MessageBox("Alert", "fungsi panggil gagal!")
 return
end if
sle_1.text = String(lul_VolumeSerialNumber) // / / mendapatkan nomor seri harddisk



// Sumber :http://blog.zjxu.edu.cn/zyc/readblog.asp?blogid=12&id=22

Memanggil DLL VC++ dengan Powerbuilder

A. Overview :
Dynamic link library (Dynamic-Link Library), disebut sebagai DLL, sebuah program berbasis Windows yang dirancang untuk komponen yang sangat penting. Dengan menggunakan DLL mempunyai banyak keuntungan: 


1. Penggunaan DLL tidak untuk menyalin Program tersebut, Melainkan sebagai Fungsi Entry Point dan    Interface. Apabila ada beberapa Program memanggil DLL yang sama system hanya perlu me-reload ulang DLL tersebut dimemori
2. DLL adalah sebuah program berbasis modul-modul Windows, yang tidak hanya berisi kode executable, tetapi juga dapat berisi data, berbagai sumber daya untuk memperluas penggunaan file-file library.
3. Fungsi Utama dari DLL adalah untuk mengurangi Duplikat penggunaan fungsi sehingga akan megurangi beban kerja dan sekaligus meningkatkan kinerja akses.
4. DLL memperkaya PowerScript dalam kemampuan bahasa pemrograman, Sebagai contoh: pengguna dapat menulis sistem pemrosesan gambar untuk mencari file dan disimpan dalam database, aplikasi harus menggunakan browser, tetapi dengan bahasa PowerScript tidak menyediakan fungsi untuk melakukan pekerjaan semacam itu, dalam rangka untuk memanipulasi perangkat, perlu untuk berkomunikasi dengan perangkat itu sendiri, lingkungan, lingkungan ini umumnya disediakan oleh produsen dynamic link library.
5. DLL bersifat Independen sehingga dalam lingkungan windows dimungkinkannya sebuah program memanggil fungsi DLL.

Contoh berikut menggunakan DLL untuk koneksi melalui program PowerBuilder dan VC + +.

B. Buat DLL dengan VC++ 
VC ++ 5,0 menggunakan MFC AppWizard dapat secara otomatis hasilkan Win32 DLL dan AppWizard MFC DLL, dimulai setelah VC, dari File | New item menu, pilih kotak NEW dialog , di Proyek tab, pilih  NEW PROJECT untuk MFC AppWizard (dll), masukkan PROJECT NAME pbdll, klik tombol OK, pop-up dialog box , pilih jenis DLL: Reguler DLL menggunakan MFC DLL Share, dan kemudian klik tombol Finish. AppWizard akan secara otomatis membuat sebuah DLL yang mengandung unsur-unsur dasar dari kerangka kerja, dan kemudian kita tinggal menambahkan kode secara manual.  
 
Buka file pbdll.cpp, tambahkan fungsi berikut:

extern "C" _declspec ( dllexport )
int PASCAL out_num(int x)
{
int y;
char msg[30];
y=x > >2;
sprintf(msg, "Hasil%o ! ", y);
::MessageBox(NULL, msg, "Pesan", MB_OK);
return 0;
}


 Pernyataan di atas fungsi out_num (), masukan parameter untuk nomor integer, untuk menggeser operasi, hasil perhitungan dengan kotak dialog akan ditampilkan. Kemudian buka file pbdll.def, masukkan fungsi dalam pernyataan EKSPOR out_num, file berbunyi sebagai berikut:

LIBRARY "pbdll"
DESCRIPTION pbdll Windows Dynamic Link Library 


EXPORTS
; Explicit exports can go here

out_num @ 1 

Terakhir dikompilasi dynamic link library tersebut sehingga menghasilkan pbdll.dll. 

C. Buat program PB untuk Memanggil DLL pbdll.dll
Dalam PowerBuilder untuk memanggil fungsi out_num () kode adalah sebagai berikut:

Function int out_num ( int irow ) LIBRARY "pbdll.dll"

int irow,retcode
irow=dw_1.rowcount()
retcode=out_num(irow)

Silahkan mencoba. 
Sumber asli :http://www.goalercn.com/article/article.php?id=2974

Selasa, 16 Maret 2010

MEMBUAT REPORT DATAWINDOW DENGAN QUERY UNION

Untuk membuat report Union di datawindow  ada beberapa
cara:
Cara pertama : yaitu dengan mengetikan query sql yang
menggunakan Union pada sql syntax di datawindow
Cara kedua : dengan menggunakan tools design union
berikut saya akan coba berikan langkah-langkah pembuatan
datawindow dengan cara kedua

Asumsikan kita mempunyai 2 buah tabel yang akan ditampilkan
kedalam sebuah report datawindow.

1. TABEL PELANGGAN
Kode Nama Alamat Telp
P001 Mr. Yandi Jakarta 021-55252214
P002 Mr. Azis Jakarta 021-52541444
P003 Mr. Jony Jakarta 021-85285142

2. TABEL SUPLIER
Kode Nama Alamat Telp
S001 Tuan Agus Jakarta 021-88888871
S002 Tuan Abdul Jakarta 021-65258524
S003 Tuan Rahmat Jakarta 021-78554125
Langkah-Langkah :

1. Pilih New > Tabular

2. Pilih SQLSelect

3. Pilih Table PELANGGAN

4. Pilih COMPUTE COLUMNS
5. Kemudian klik kanan pada kolom tersebut dan pilih Column
setelah itu pilih kolom pada tabel pelanggan satu persatu, tapi yang perlu diingat adalah pemberian
nama pada kolom2 tersebut dengan didahului "as"

6. Kemudian pilih Menu Design dan pilih UNION maka akan muncul dialog seperti gambar dibawah ini :

7. Pilih New
8. Pilih Tabel Supplier dan klik Open

9. Langkah selanjutnya seperti no.4 dan 5. dengan catatan penamaan "as" pada setiap kolom harus sama dengan kolom pada tabel pelanggan.

10. Selanjutnya Pilih RETURN

11. Kita bisa lihat hasil syntax query yang telah kita buat

12. Selanjutnya Datawindow sudah bisa kita gunakan.

Selasa, 02 Maret 2010

Powerbuilder Windows API

Arc()
Fungsi ini digunakan untuk menggambar lingkaran

Global External Function:
FUNCTION boolean Arc(ulong hwnd, long r1, long r2, long r3, long r4, long a1, long a2, long a3, long a4) LIBRARY "Gdi32.dll"

Script:
Boolean rtn
ulong l_handle, l_device
long lv[8]
l_handle = handle(w_main) // 'w_main' is the name of the sample window.
l_device = GetDC(l_handle)
lv[ ] = {10,40,300,220,0,0,180,0}
rtn = Arc(l_device, lv[1], lv[2], lv[3], lv[4], lv[5], lv[6], lv[7], lv[8])
-----------------------------------------------------------------------------------
Beep()
Fungsi ini untuk suara, seperti beep pada PB

Global External Function:
FUNCTION boolean Beep(long freq,long dur) LIBRARY "Kernel32.dll"

Script:
Boolean rtn
Long ll_freq, ll_dur
ll_freq = 500
ll_dur = 20
rtn = Beep(ll_freq, ll_dur)
------------------------------------------------------------------------------------
BringWindowToTop( )
Sebuah perintah agar window selalu berada didepan seperti perintah :[window].bringtotop = true

Global External Function:
FUNCTION boolean BringWindowToTop(ulong w_handle) LIBRARY "User32.dll"

Script:
Boolean rtn
ulong l_handle
l_handle = handle(w_win2)
rtn = BringWindowToTop(l_handle)
------------------------------------------------------------------------------------
Chord( )
Sebuah Chord adalah daerah yang dibatasi oleh perpotongan sebuah elips dan garis segmen. Fungsi ini menggambar suatu chord berdasarkan koordinat dari function.

Global External Function:
FUNCTION boolean Chord(ulong hwnd,long x1,long y1,long x2,long y2,long r1, long r2, long r3, long r4) LIBRARY "Gdi32.dll"

Script:
boolean rtn
ulong l_handle, l_device
long lv[8]
l_handle = handle(w_main)
l_device = GetDC(l_handle)

/*Hal ini dapat dilakukan dalam satu baris seperti: l_device = GetDC(handle(w_main))*/

lv[ ] = {5,5,200,200,0,0,200,300}
rtn = Chord(l_device, lv[1], lv[2], lv[3], lv[4], lv[5], lv[6], lv[7], lv[8])

CloseHandle( )
Fungsi ini digunakan untuk menangani objek yang terbuka, seperti Destroy pada PB saat

Global External Function:
FUNCTION boolean CloseHandle(ulong w_handle) LIBRARY "Kernel32.dll"

Script:
boolean rtn
ulong l_handle
string ls_wname
Lihat Blog
ls_wname = ""
l_handle = A(0, ls_wname) // Usually you would already have the handle.
rtn = CloseHandle(l_handle)
------------------------------------------------------------------------------------
CloseWindow( )
Fungsi CloseWindow meminimalkan Window yang ditargetkan.Yang paling dekat adalah setara PowerBuilder WindowState , tapi ini terbatas hanya window PB. Sintaks di PowerBuilder adalah sebagai berikut: . WindowState =Minimized!

Global External Function:
FUNCTION boolean CloseWindow(ulong w_handle) LIBRARY "User32.dll"

Script:
boolean rtn
ulong l_handle
string ls_wname
ls_wname = ""
l_handle = FindWindowA(0, ls_wname) // Be sure to use the exact title of the window you are targeting.
rtn = CloseWindow(l_handle)
------------------------------------------------------------------------------------
CopyFileA( )
Fungsi ini salinan sebuah file dengan mengambil nama-nama sumber dan tujuan sebagai string dengan referensi.

Global External Function:
FUNCTION boolean CopyFileA(ref string cfrom, ref string cto, boolean flag) LIBRARY "Kernel32.dll"

Script:
string l_from, l_to
boolean l_flag, rtn
l_flag = false
l_from = "c:\pwrs\pb5i32\ex\code\beach.bmp"
l_to = "c:\test.bmp"
rtn = CopyFileA(l_from, l_to, l_flag)
MessageBox("CopyFile", string(rtn))
------------------------------------------------------------------------------------
CreateDirectoryA( )

Tombol ENTER sebagai Tombol TAB

Disini kami hanya mensimulasi Tombol ENTER agar bekerja seperti Tombol TAB.

1. Buat User Event di datawindow dengan nama "ue_enter"
2. Pilih Event ID dengan pbm_dwnprocessenters
3. Ketik script dibawah ini :

Send(Handle(This),256,9,Long(0,0))
Return 1


Semoga bermanfaat.

Prinsip penamaan Variabel dalam Powerbuilder

Saat memberi penamaan variable dalam Powerbuilder, Perlu diperhatikan agar tidak terjadi kesalahan dan arti dalam memberi nama pada variabel yang kita deklarasikan
Hal hal yang perlu diperhatikan adalah Lingkup, Awalan atau Prefix dan Arti dari variabel tersebut.


Syntax:
   [scope][prefix]_[name]  

Scope Qualifiers


Scope Prefix Example
Argument a al_NameId
Global g gs_Name
Instance i ii_Count
Local l ls_Foo
Shared s si_Number

Standard DataType Prefixes


Data Type Prefix Example
Any a la_Raw
Blob blb ablb_Image
Boolean b lb_Exit
Character c lc_Name
Date d ld_BirthDate
DateTime dt ldt_Wreck
Decimal dec ldec_Salary
Double db gdb_OverTime
Integer i li_Count
Long l ll_RowCount
Real r sr_Illusion
String s ls_Bean
Time tm itm_MrWolf
Unsigned Integer ui lui_Handle
Unsigned Long ul gul_Ken

Standard Object DataType Prefixes


Object Type Prefix Example
Application app gapp_PBDelta
ArrayBounds ab lab_Bound
CheckBox cbx icbx_Male
ClassDefinition cldef lcldef_Object
ClassDefinitionObject cldefo lcdefo_ThatObject
CommandButton cb lcb_Cancel
Connection cn lcn_Known
ConnectionInfo cni lcni_ServerInfo
ConnectObject cno scno_ConObj
ContextInformation cxinfo lcxinfo_ObjContext
ContextKeyword cxk lcxk_TheKey
CPlusPlus cpp lcpp_CModule
Datastore ds lds_StockData
Datawindow dw ldw_Employee
DatawindowChild dwc ldwc_States
DragObject drg ldrg_ByTheHair
DrawObject drw ldrw_PaintBrush
DropDownListBox ddlb lddlb_States
DropDownPictureListBox ddplb lddplb_StatesWithFlags
dwObject dwo ldwo_Column
DynamicDescriptionArea dda ldda_Execute
DynamicStagingArea dsa ldsa_MyQuery
EditMask em lem_PhoneNo
EnumerationDefinition enum lenum_Cycle
EnumerationItemDefinition
enumi ienumi_Item
Environment env lenv_System
Error err gerr_Snarl
ExtObject exto gexto_Outside
Function_Object fo lfo_Function
Graph gr lgr_Sales
GraphObject gro lgro_Line
GrAxis grx lgrx_Profit
GrDispAttr grda igrda_Value
GroupBox gb igb_Employee
HScrollBar hsb ihsb_Percent
iNet inet linet_Web
InternetResult ir lir_Page
Line li lli_Arrow
ListBox lb llb_States
ListView lv llv_Filenames
ListViewItem lvi llvi_Item
MailFileDescription mfd lmfd_Mail
MailMessage mm lmm_Mail
MailRecipient mr lmr_Mail
MailSession ms lms_Session
MDIClient mdi lmdi_Frame
Menu m lm_Menu
MenuCascade mc lmc_WaterFall
Message msg lmsg_Whisper
MultiLineEdit mle lmle_Text
NonVisualObject nvo lnvo_Invisible
OLEControl oc loc_Bulls
OLECustomControl occ locc_Dial
OLEObject oo loo_Ghost
OLEStorage ostg gostg_WordFile
OLEStream ostm lostm_River
OMControl omc iomc_Temp
OMCustomControl omcc lomcc_Dial
OMEmbeddedControl omec lomec_Micro
OMObject omo iomo_Bob
OMStorage omstg somstg_Drive
OMStream omstm lomstm_Mersey
Oval ov lov_Circle
PBtoCPPObject pb2cpp lpb2cpp_Quad
Picture p lp_Smile
PictureButton pb lpb_Click
PictureListBox plb lplb_Drives
Pipeline pl lpl_OilandGas
Powerobject po lpo_Source
ProfileCall prc lprc_Face
ProfileClass prcl lprcl_Room
ProfileLine prl iprl_Bob
ProfileRoutine prr lprr_Cat
Profiling pr lpr_Outline
RadioButton rb lrb_Male
Rectangle rec irec_Tum
RemoteObject ro iro_Employee
RichTextEdit rte lrte_Script
RoundRectange rr lrr_Lion
ScriptDefinition sdef lsdef_Mycode
Service srv lsrv_Charge
SimpleTypeDefinition std istd_MyType
SingleLineEdit sle lsle_Name
StaticText st lst_Prompt
Structure str lstr_Data
SystemFunctions sf lsf_Bay
Tab tab ltab_Strip
Timing tmg ltmg_Clock
TraceActivityNode tran ltran_Node
TraceBeginEnd trbe ltrbe_Start
TraceError tre ltre_Error
TraceFile trf itrf_TraceFile
TraceGarbageCollect trgc itrgc_Call
TraceLine trln strln_Rope
TraceObject tro ltro_Bob
TraceRoutine trr ltrr_Tiger
TraceSQL trsql ltrsql_MySQL
TraceTree trt ltrt_Birch
TraceTreeError trte ltrte_Err
TraceTreeGarbageCollect trtgc ltrtgc_Trash
TraceTreeLine trtl ltrtl_String
TraceTreeNode trtn ltrtn_Kilt
TraceTreeObject trto ltrto_Trace
TraceTreeRoutine trtr ltrtr_BobGrimmer
TraceTreeUser trtu ltrtu_User
TraceUser tru ltru_Blue
Transaction tr ltr_Trans
Transport tp ltp_Server
Treeview tv ltv_Directory
TreeviewItem tvi ltvi_Node
TypeDefinition typdef ltypdef_Details
UserObject uo luo_Control
VariableCardinalityDefinition
vcd lvcd_Type
VariableDefinition vd lvd_Sore
VerticalScrollBar vsb lvsb_Amount
Window w w_PleaseWait
WindowObject wo lwo_WomanElement

Jumat, 26 Februari 2010

Cara mendapatkan DBMS, User database melalui ODBC

/*Buat external function*/
FUNCTION integer SQLGetInfo (long hconn, integer infotype, ref string infotypeptr, integer bufferlength, ref integer bufferlengthptr) LIBRARY "odbc32.dll"

/*Buat script*/
string ls_dbms, ls_database, ls_user
integer li_length

CONSTANT integer SQL_DBMS_NAME = 17
CONSTANT integer SQL_DATABASE_NAME = 16
CONSTANT integer SQL_USER_NAME = 47

long ll_dbhandle

ls_dbms = space(256)
ls_database = space(256)
ls_user = space(256)
ll_dbhandle = SQLCA.DbHandle()

SQLGetInfo(ll_dbhandle, SQL_DBMS_NAME, ls_dbms, 255, li_length)
SQLGetInfo(ll_dbhandle, SQL_DATABASE_NAME, ls_database, 255, li_length)
SQLGetInfo(ll_dbhandle, SQL_USER_NAME, ls_user, 255, li_length)

MessageBox("Current DBMS" , trim(ls_dbms))
MessageBox("Current DATABASE" , trim(ls_database))
MessageBox("Current USER" , trim(ls_user))

Mengganti huruf pertama menjadi kapital

Semisal kita mempunyai inputan data "luv piyut" dan kita ingin data inputan tersebut menjadi "Luv Piyut" maka kita bisa menggunakan fungsi WordCap() seperti tips berikut :

String ls_nama,ls_hasil

ls_nama = "luv piyut"

ls_hasil = dw_1.Describe ( "Evaluate('WordCap(~"" + ls_nama + "~")',0)")

Silahkan lihat hasilnya...:)

Menentukan lama waktu execute sebuah script

Untuk menguji lama waktu yang diperlukan dalam meng-execute sebuah potongan script kita bisa menggunakan fungsi CPU()

Long ll_start,ll_waktu

ll_start = CPU()

/*
** Script yang diexecute
*/

ll_waktu = CPU() - ll_start

Menentukan Nilai RGB

Program Contoh dibawah ini akan menggunakan funsi MOD untuk memisahkan warna merah, biru dan hijau

1. Buat aplikasi baru dalam Powerbuilder
2. Buat window baru
3. Tambahkan Control Commandbutton dan StaticText pada window
4. Tambahkan script berikut pada event Commandbutton Click()

Long c, gc
Integer R, G, B

C= st_1.BackColor
gc = rgb(0,1,0)
R = Mod(c, gc)
C = C / gc
G = Mod(c, gc)
C = C / gc
B = Mod(c, gc)

MessageBox ( "Nilai RGB", "Merah =" + String (R) + 'Green = "+ String (G) +" Blue = "+ String (B))

Jalankan program sampel dan klik tombol.
Sebuah pesan akan muncul yang menunjukkan nilai-nilai merah, hijau dan biru yang mewakili StaticText properti BackColor.

Membaca file lebih besar dari 32.765 bytes

Fungsi FileRead terbatas dalam membaca file hanya sampai 32.765 bytes saja, hal ini bisa diatasi

blob lbl_data
blob lbl_temp
long ll_file

ll_file = Fileopen("mybigfile.txt",streammode!)

DO WHILE FileRead(ll_file,lbl_temp) > 0
lbl_data += lbl_temp
LOOP

FileClose(ll_file)

Menampilkan atau menyembunyikan Desktop dan Taskbar

Beberapa aplikasi mengharuskan pengguna tidak dapat mengakses taskbar atau desktop ketika menjalankan aplikasi kita. Kami akan memblokir akses ke taskbar atau desktop dengan memanggil Windows API.

//Deklarasikan 2 Function berikut :

Function long FindWindowExA ( long hWnd, long hWndChild, ref string lpszClassName, ref string lpszWindow) library "user32"
Function long ShowWindow (long hWnd, long nCmdShow ) library "user32"

//Tambahkan script berikut :

//Konstanta untuk ShowWindow()
Constant Long SW_HIDE = 0
Constant Long SW_NORMAL = 1
Constant Long SW_SHOWMINIMIZED = 2
Constant Long SW_SHOWMAXIMIZED = 3
Constant Long SW_SHOWNOACTIVATE = 4
Constant Long SW_SHOW = 5
Constant Long SW_MINIMIZE = 6
Constant Long SW_SHOWMINNOACTIVE = 7
Constant Long SW_SHOWNA = 8
Constant Long SW_RESTORE = 9
Constant Long SW_SHOWDEFAULT = 10
--------------------------------------------------------

//Mencari nama Windows Shell
String ls_ShellViewWnd = "Progman"
String ls_ShellTaskBarWnd = "Shell_TrayWnd"
String ls_Null

// Local
Long ll_HTaskBar, ll_HDeskTop

// Hide Taskbar
ll_HTaskBar = FindWindowExA( 0, 0, ls_ShellTaskBarWnd, ls_Null )
ShowWindow( ll_HTaskBar, SW_HIDE )

// Hide Desktop
ll_HDeskTop = FindWindowExA( 0, 0, ls_ShellViewWnd, ls_Null )
ShowWindow( ll_HDeskTop, SW_HIDE )

// Tunda untuk memulihkan
MessageBox( 'Pause', 'Lihat Perbedaannya !' )

// Show Taskbar
ll_HTaskBar = FindWindowExA( 0, 0, ls_ShellTaskBarWnd, ls_Null )
ShowWindow( ll_HTaskBar, SW_SHOW )

// Show Desktop
ll_HDeskTop = FindWindowExA( 0, 0, ls_ShellViewWnd, ls_Null )
ShowWindow( ll_HDeskTop, SW_SHOW )

Membuat Function tanggal akhir bulan

1. Buat argument ad_date dengan tipe Date
2. Pilih Return tipe nya dengan tipe data Date
2. Buat script berikut

int li_retdays, li_month, li_year

li_month = Month(ad_date)
li_year = year(ad_date)

IF li_month < 12 THEN
li_month ++
ELSE
li_month = 1
li_year ++
END IF

// Membuat tanggal awal
ld_newdate = date(li_year),li_month,1)

// membuat tanggal akhir
ld_previousMonthLastDay = day(relativedate(ld_newdate, -1))

Return(ld_previousMonthLastDay)

Mendeteksi Versi Powerbuilder

String ls_PBver
Environment env

GetEnvironment(env)

ls_PBver = string(env.pbmajorrevision) + '.' + string(env.pbminorrevision) + '.' + string(env.pbfixesrevision)

Membuat List Printer yang terinstal dengan Listbox

Dalam tips ini kita akan membuat list printer yang terinstal didalam komputer dengan menggunakan LISTBOX

STRING ls_printers[]
INT li_rtn, i, li_nbPrinters

li_rtn = RegistryKeys("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers", ls_printers)
li_nbPrinters = UpperBound(li_printers)

FOR i = 1 TO li_nbPrinters
lb_1.addItem(ls_printers[i])
NEXT

Merubah List Datawindow ke Grid Datawindow atau sebaliknya

1. Ekspor Datawindow
2. Edit datawindow yang telah kita ekspor tersebut
3. Cari "Processing ="
4. Untuk membuat DW List menjadi Grid, ubah Processing=1
5. Untuk membuat DW list menjadi normal atau non-grid, ubah Processing=0

Membuat Datawindow Secara Dinamis

String ls_select,ls_where,ls_dwsyntax,ls_err

ls_select = "Select id, fname, lname, address, city, state, zip from customer"
ls_where = " where customer.fname like '" + is_cust + "%'"
ls_dwsyntax = SQLCA.SyntaxFromSQL ( ls_select, "Style(Type=grid)", ls_err )

dw_1.Create ( ls_dwsyntax, ls_err )

IF ls_err <> '' THEN
MessageBox ( "error - Syntax", ls_err )
ELSE
dw_1.SetTransObject ( SQLCA )
dw_1.Retrieve()
END IF

Ubah warna berganti-ganti baris pada datawindow

Untuk baris pada datawindow memiliki penampilan kertas printer menambahkan Expresi berikut dalam Color detail band.

IF (Mod(GetRow(),2)=0, RGB(0,255,0), RGB(255,255,255))


Warna latar belakang ini tidak muncul ketika Anda mencetak laporan.
Jika Anda ingin mencetak efek ini anda harus menambahkan sebuah persegi panjang atau kolom teks kosong di belakang kolom detail dan meletakkan pernyataan di atas.

Tambahkan event Timer kontrol standar

Apakah Anda tahu bahwa Anda dapat menambahkan Event Timer PowerBuilder kontrol visual?

Pertama memetakan sebuah event Timer event pbm_Timer.
Kemudian tambahkan panggilan API berikut:

Function Long SetTimer(Long hwnd, Long IdTimer, Long uTimeOut, Long tmpre) Library "user32.dll"
Function Long KillTimer(Long hwnd, Long IdEvent) Library "user32.dll"

Untuk mengontrol, gunakan perintah berikut bukan Timer ().

SetTimer(Handle(the_control), 1, 500, 0) // 500 adalah jumlah milidetik, atau setiap setengah detik
KillTimer (Handle(the_control), 1) / / Untuk Timer.

Sabtu, 20 Februari 2010

Function Center Window

Membuat Tampilan window agar berada ditengah-tengah layar monitor

1. Buat Variable Global pada Declare Global Variables :

Long ScreenWidth, ScreenHeight



2. Buat Nama function misalkan dengan nama f_center

3. Pilih dengan tipe data argumen :window dan nama argumen tersebut a_window

4. pilih tipe data return : integer



5. Ketik Script Dibawah ini :


Environment le_Env
Integer li_ScreenH, li_ScreenW


GetEnvironment(le_Env)


li_ScreenH = PixelsToUnits(le_Env.ScreenHeight, YPixelsToUnits!)
li_ScreenW = PixelsToUnits(le_Env.ScreenWidth, XPixelsToUnits!)

a_window.Y = (li_ScreenH - a_window.Height) / 2
a_window.X = (li_ScreenW - a_window.Width) / 2
a_window.SetPosition(Topmost!)

return 1

6. Untuk Syntax pemanggilan function ini f_center(nama_window) pada saat event open()

7. Selamat Mencoba!!

Function Encrypt & Decrypt

[function string of_encrypt(as_str)]
integer i, j
string ls_enctext = ""
CONSTANT string CRYPT_KEY = "$#@%&#%@&*"

j = len(as_str)
FOR i = 1 TO j
ls_enctext += mid(CRYPT_KEY , mod(i,10) + 1, 1)
ls_enctext += String(Char(255 - Asc(Mid(as_str, i, 1))))
NEXT

RETURN ls_enctext
======================================================
[function string of_decrypt(as_str)]
integer i, j
string ls_encchar, ls_temp, ls_unasstr = "** Encryption Error"
boolean lb_ok = true
CONSTANT string CRYPT_KEY = "$#@%&#%@&*"

j = len(as_str)

IF NOT Mod(j, 2) = 1 THEN
ls_temp = ""
FOR i = 2 TO (j + 1) STEP 2
ls_encchar = Mid(as_str, i - 1, 1)
IF mid(CRYPT_KEY, Mod(i / 2, 10) + 1, 1) <> ls_encchar THEN
lb_ok = FALSE
EXIT
END IF
ls_encchar = Mid(as_str, i, 1)
ls_temp += string(char(255 - asc(ls_encchar)))
NEXT
END IF

IF lb_ok THEN ls_unasstr = ls_temp

RETURN LS_UNASSTR
=======================================================