/*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))
Jumat, 26 Februari 2010
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...:)
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
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.
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)
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 )
//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)
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)
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
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
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
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.
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.
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!!
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
=======================================================
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
=======================================================
Langganan:
Postingan (Atom)