Tampilkan postingan dengan label PowerScript. Tampilkan semua postingan
Tampilkan postingan dengan label PowerScript. Tampilkan semua postingan

Selasa, 14 April 2015

Membatasi Aplikasi yang Running hanya satu

Berikut ini adalah tips untuk membatasi user dalam menjalankan aplikasi, Hal ini guna mencegah agar user hanya menjalankan aplikasi cuma satu saja.

Berikut step by stepnya :

  • Klik "NEW
  • Pilih Tab "Pb Object" kemudian pilih "CUSTOM CLASS"
Custom Class
  • Set Properties AutoInstantiate menjadi TRUE

  • Deklarasikan  Win32 API modul pada  UserObject  -> Local External Functions
Function Long GetLastError () Library 'kernel32.dll'
Function ULong CreateMutex (ULong lpsa, Boolean fInitialOwner, String lpszMutexName) Library 'kernel32.dll' Alias for CreateMutexA
  • Buat UserObject Function seperti dibawah ini :

String ls_name
If Handle(GetApplication()) > 0 Then
   ls_name = GetApplication().AppName + Char(0)
   CreateMutex(0, True, ls_name)
   If GetLastError() = 183 Then Return True
End If
Return False
  • Simpan user object yang dibuat dengan nama uo_limitrun (sebagai contoh)
  • Untuk mengunakan object tersebut, copy script dibawah ini pada event open pada form aplikasi.

uo_limitrun lou_limitrun
If lou_limitrun.uf_isrunning() Then
  MessageBox ('Warning', 'Application is already running', StopSign!)
  HALT CLOSE
End If
//...
// Your next line code
//...

Senin, 14 April 2014

Konversi Hexadecimal to Decimal

Wah Sudah lama tidak nulis2 diblog...

Kali ini saya akan menulis sebuah function untuk mengkonversi bilangan Hexadecimal ke Decimal
berikut ini adalah langkah2nya :

1. Buat New Function dengan function name "F_Hex2Dec "
2. Isi Return Type dengan "long"
3. Isi Argument Type dengan "string" dan Argument Name dengan "as_Hex "
4. Tuliskan powerscript dibawah ini
5. Selamat mencoba...

/**********************************************/
/*  public long F_Hex2Dec ( string as_Hex )  */
/**********************************************/

CONSTANT STRING ls_HexSet = "0123456789ABCDEF"

STRING  ls_Hex, ls_Bit
LONG    ll_RetVal = 0
INTEGER li_C, li_Len, li_Pos
BOOLEAN lb_Error = FALSE

ls_Hex = Upper( as_Hex )

IF NOT IsNull( ls_Hex ) AND ls_Hex <> "" THEN
   
    li_Len = Len( ls_Hex )
   
    FOR li_C = 1 TO li_Len
        ls_Bit = Mid( ls_Hex, li_C, 1 )
        li_Pos = Pos( ls_HexSet, ls_Bit )
       
        IF li_Pos = 0 THEN
            lb_Error = TRUE
        ELSE
            ll_RetVal += ( ( li_Pos - 1 ) * ( 16 ^ ( li_Len - li_C ) ) )
        END IF
    NEXT
    IF lb_Error THEN ll_RetVal = 0
END IF

RETURN ll_RetVal


Rabu, 17 Oktober 2012

Kumpulan Script Membuat 3D di PB 12.5 .NET dengan HELIX 3D TOOLKIT

Berikut kumpulan2 script dalam membuat aplikasi WPF 3D di Powerbuilder 12.NET, sebelum membuatnya ada baiknya anda download dulu komponen helix 3D toolkit disini
Selanjutnya add Reference file2 dll nya :
1. 3DTools.dll
2. HelixToolkit.Wpf.dll
3. HelisToolkit.Wpf.Input.dll

XAML :

 xmlns:helix="clr-namespace:HelixToolkit.Wpf;assembly=HelixToolkit.Wpf"


<helix:HelixViewport3D Name="viewport3D"
InfoBackground="White"
Background="Transparent"
IsHeadLightEnabled="True"
InfiniteSpin="True"
CameraRotationMode="Turnball">
          <helix:HelixViewport3D.Camera>
                  <PerspectiveCamera Position="40,0,0"
LookDirection="-40,0,0"
UpDirection="0,0,9"
FieldOfView="61"
NearPlaneDistance="0.125"
FarPlaneDistance="Infinity" />
        </helix:HelixViewport3D.Camera>
            <helix:SunLight />
      </helix:HelixViewport3D>

       

SCRIPT :
1. Create Viewport3D dari Script
HelixToolkit.Wpf.HelixViewport3D viewport3D
viewport3D = create HelixToolkit.Wpf.HelixViewport3D
viewport3D.InfoBackground = System.Windows.Media.Brushes.Transparent
viewport3D.ZoomExtentsWhenLoaded = True
viewport3D.IsHeadLightEnabled = True
viewport3D.InfiniteSpin = True
viewport3D.Background = System.Windows.Media.Brushes.Transparent
viewport3D.CameraRotationMode = HelixToolkit.Wpf.CameraRotationMode.Turnball!

1. Memanggil File 3DS

HelixToolkit.Wpf.FileModelVisual3D iFile3D
iFile3D = Create HelixToolkit.Wpf.FileModelVisual3D
iFile3D.Source = "Files3D\heart.3DS"
viewport3D.Children.Add(iFile3D)

2. Rotate Object 3DS

System.Nullable lnull1,lnull2

lnull1 = create System.Nullable(1)
lnull2 = create System.Nullable(361)

System.Windows.Media.Animation.DoubleAnimation myAnimation
myAnimation = create System.Windows.Media.Animation.DoubleAnimation
myAnimation.From = lnull1
myAnimation.To = lnull2
myAnimation.Duration = create System.Windows.Duration(System.TimeSpan.FromMilliseconds(5000))
myAnimation.RepeatBehavior = System.Windows.Media.Animation.RepeatBehavior.Forever

System.Windows.Media.Media3D.Vector3D lvector3D
lvector3D = Create System.Windows.Media.Media3D.Vector3D(0, 0, 1)

System.Windows.Media.Media3D.AxisAngleRotation3D AxisAR3D
AxisAR3D = Create System.Windows.Media.Media3D.AxisAngleRotation3D(lvector3D,1)

System.Windows.Media.Media3D.RotateTransform3D myRotateTransform
myRotateTransform = Create System.Windows.Media.Media3D.RotateTransform3D(AxisAR3D)

myRotateTransform.Rotation.BeginAnimation(System.Windows.Media.Media3D.AxisAngleRotation3D.AngleProperty, myAnimation)

iFile3D.Transform = myRotateTransform

3. Menghentikan Rotate
System.Windows.Media.Media3D.RotateTransform3D myRotateTransform
myRotateTransform = Create System.Windows.Media.Media3D.RotateTransform3D

myRotateTransform.Rotation.Freeze()

iFile3D.Transform = myRotateTransform

4. Converting Warna

string ls_warna

ls_warna = '1'

choose case ls_warna
CASE '1'
ls_warna = '#2F3699'
CASE '2'
ls_warna = '#9DDA4E'
case '3'
ls_warna ='#00B7EF'
case '4'
ls_warna = '#000000'
case '5'
ls_warna = '#ED1C24'
case else
ls_warna = '#FFFFFF'
end choose

System.Windows.Media.BrushConverter lconverter
lconverter = create System.Windows.Media.BrushConverter

System.Windows.Media.Brush lbrush
lbrush = lconverter.ConvertFromString(ls_warna)

4. Menambahkan Object ke Viewport

HelixToolkit.Wpf.SphereVisual3D Sphere3D[1]
Sphere3D[1] = create HelixToolkit.Wpf.SphereVisual3D
Sphere3D[1].Radius = 2
Sphere3D[1].Center = p3
Sphere3D[1].Fill = lbrush
viewport3D.Children.Add(Sphere3D[1])

5. Merubah posisi Camera
System.Windows.Media.Media3D.PerspectiveCamera myPCamera
myPCamera = create System.Windows.Media.Media3D.PerspectiveCamera
myPCamera.NearPlaneDistance = 1
myPCamera.FieldOfView = 61
myPCamera.Position = Create System.Windows.Media.Media3D.Point3D(180,0,0)
myPCamera.LookDirection = Create System.Windows.Media.Media3D.Vector3D(-180,0,0)
myPCamera.UpDirection = create System.Windows.Media.Media3D.Vector3D(0, 0, 9)
viewport3D.Camera = myPCamera

6. Mencapture Viewport ke dalam Picture

System.Windows.Rect rect
rect = create System.Windows.Rect

rect.Height = view_3D.Viewport.ActualHeight
rect.Width  = view_3D.Viewport.ActualWidth

// Scale dimensions from 96 dpi to 600 dpi.
double scale

scale = 600 / 96

integer li_pixelWidth,li_pixelHeight

li_pixelWidth = integer(scale * (rect.Width + 1))
li_pixelHeight= integer(scale * (rect.Height + 1))

System.Windows.Media.Imaging.RenderTargetBitmap renderbitmap
renderbitmap = create System.Windows.Media.Imaging.RenderTargetBitmap(li_pixelWidth,li_pixelHeight,scale * 96,scale * 96, System.Windows.Media.PixelFormats.Default)
 
renderbitmap.Render(viewport3D)
 
    // set ke picture

p_1.Source = renderbitmap

//Jika ingin save ke File sekalian buat directorynya

string l_directori

l_directori = "C:\Temp_image\"

if System.IO.Directory.Exists(l_directori) then
l_directori = "C:\Temp_image\"
else
System.IO.Directory.CreateDirectory(l_directori)
end if

System.Windows.Media.Imaging.PngBitmapEncoder image
image = create System.Windows.Media.Imaging.PngBitmapEncoder

image.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(renderbitmap))

System.IO.Stream fs
fs = System.IO.File.Create(l_directori+"NamaFile.png")
image.Save(fs)


7. Save Viewport3D ke File
System.Windows.Controls.PrintDialog dlg
dlg  = create System.Windows.Controls.PrintDialog

if dlg.ShowDialog().GetValueOrDefault() = true then
dlg.PrintVisual(viewport3D.Viewport,"TEST")
end if

Selasa, 18 Mei 2010

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

Sabtu, 20 Maret 2010

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, 02 Maret 2010

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)

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

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!!