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