aplikasi pemanipulasi folder
Post on 23-Jun-2015
143 Views
Preview:
TRANSCRIPT
bds_project 1
Pengarang : Bayu Dwi Saputra
Tanggal : 17 September 2009
Version : Tutorial
e-mail : bds_programer@ymail.com
Software : Visual Basic 6
CARA MEMBUAT APLIKASI PEMANIPULASI FOLDER
Seperti yang saya janjikan pada artikel-artikel saya sebelumnya, artikel ini saya buat untuk
menjelaskan cara membuat aplikasi browse folder yang sudah saya letakan pada indowebster.com
pada bagian software. Pada aplikasi ini saya menggunakan fungsi Win32Api dalam proses pembuatan
browse folder yang insya Allah saya akan beritahu cara memanggil dan memanipulasinya serta saya
menggunakan Scripting FSO (File System Object) untuk mempermudah dan membantu saya dalam
memanipulasi sebuah folder. Selamat mempelajari dan semoga bermanfaat…..
Browse Folder
Browse Folder GUI (Graphic User Interface)
Gambar Browse Folder Saat Dijalankan
Gambar Browse Folder Pada Form Project
bds_project 2
Bagian-Bagiannya
Form Properties
Bagian Form Properties
No Properties Isi Keterangan
1 Caption Folder Browse Nama untuk aplikasi ini ketika sudah dikompail
2 Name frmBrs Nama untuk mengakses Form lewat Program
3 BorderStyle 1-FixedSingle Ukuran Form tidak bisa diubah-ubah
4 MinButton True Agar Form bisa diminimize saat dijalankan
5 StartUpPos 2-CenterScreen Agar form muncul di tengah layar computer anda
Sebaiknya Properties yang lain tidak diubah-ubah
Text Properties
Bagian Text Properties
No Properties Isi Keterangan
1 Name txtDir Nama untuk Text saat diakses melalui program
2 Apperance 0-Falat Untuk mengganti tampilan dari Text properties
3 ForeColor &H000000FF& Mengganti warna karakter dari Text properties
4 BackColor &H0080FFFF& Mengganti warna belakang dari Text properties
Sebaiknya Properties yang lain tidak diubah-ubah
Frame Properties
Bagian Frame Properties
No Items Properties Isi Keterangan
1 Frame 1
Caption Alamat Folder Nama yang akan muncul pada Frame
2 Enabled True Agar Frame terlihat
3 Frame 2
Caption Set Attribut Nama yang akan muncul pada Frame
4 Enabled True Agar Frame terlihat
5 Frame 3
Caption Folders Instructions Nama yang akan muncul pada Frame
6 Enabled True Agar Frame terlihat
7 Frame 4
Caption Informasi Nama yang akan muncul pada Frame
8 Enabled True Agar Frame terlihat
Sebaiknya Properties yang lain tidak diubah-ubah
Form Properties Text Properties Frame Properties
Check Box Properties Command Button Properties Label Properties
bds_project 3
Label Properties
Bagian Label Properties
No Properties Isi Keterangan
1 Caption Browse Folder Digunakan untuk menuliskan judul aplikasi ini
Sebaiknya Properties yang lain tidak diubah-ubah
Check Box Properties
CheckBox = Ck
Bagian Check Box Properties
No Items Properties Isi Keterangan
1 Ck 1
Name ckHd Nama untuk CheckBox 1 saat diakses lewat program
2 Caption Hidden Check Box untuk membuat attribute Hidden
3 Ck 2
Name chRO Nama untuk CheckBox 2 saat diakses lewat program
4 Caption Read-Only Check Box untuk membuat attribute Hidden
5 Ck 3
Name ckSys Nama untuk CheckBox 3 saat diakses lewat program
6 Caption System Check Box untuk membuat attribute Hidden
7 Ck 4
Name ckNor Nama untuk CheckBox 4 saat diakses lewat program
8 Caption Normal Check Box untuk membuat attribute Hidden
Sebaiknya Properties yang lain tidak diubah-ubah
Command Button Properties
CommandButton = Cmd
Listing dan Penjelasan Program
Bagian Form Code Private Sub Form_Load()
1 If Me.txtDir.Text = "" Then
2 Me.ckHd.Enabled = False ’Check Box dari Hidden
3 Me.ckNor.Enabled = False ’Check Box dari Normal
4 Me.ckSys.Enabled = False ’Check Box dari System
5 Me.ckRO.Enabled = False ’Check Box dari Read-Only
6 End If
End Sub
Penjelasan :
Keyword Me bertindak sebagai variabel yang dideklarasikan secara implisit. Ketika Class mempunyai
lebih dari satu komponen (Text, Button, dll), Me disediakan sebagai cara untuk mengarahkan eksekusi
kode pada komponen yang ditentukan. Contohnya : Me.ckHd.Enabled = False artinya VB akan
mengeset nilai property dari komponen ckHd dengan nilai False.
1 :
Dicek apakah nilai dari property Text pada komponen Text Box adalah Null String ?? jika ya
maka kode program 2 sampai dengan 5 akan dieksekusi.
2 :
Mengeset nilai property Enabled pada komponen ckHd dengan nilai False. Tujuannya
menonaktifkan Check Box saat program pertama kali dijalankan karena alamat dari folder belum
diinputkan.
3 :
Agar Check Box ckNor tidak aktif saat program pertama kali dijalankan karena belum ada
alamat dari folder yang diinputkan.
bds_project 4
4 :
Agar Check Box ckSys tidak aktif saat program pertama kali dijalankan karena belum ada
alamat dari folder yang diinputkan.
5 :
Agar Check Box ckRO tidak aktif saat program pertama kali dijalankan karena belum ada
alamat dari folder yang diinputkan. Private Sub txtDir_Change()
Dim bufStr As Integer
If Me.txtDir.Text <> "" Then
bufStr = Len(Me.txtDir.Text)
1 If bufStr > 3 Then
2 Me.ckHd.Enabled = True
3 Me.ckNor.Enabled = True
4 Me.ckSys.Enabled = True
5 Me.chRO.Enabled = True
6 Me.cmdLastAcs.Enabled = True ’Button Last Accessed
7 Me.cmdLastCrt.Enabled = True ’Button Last Created
8 Me.cmdLastMod.Enabled = True ’Button Last Modified
9 Me.cmdSize.Enabled = True ’Button Cek Size
10 Me.cmdTyp.Enabled = True ’Button Type
11 Me.cmdDel.Enabled = True ’Button Delete
Else
12 Me.ckHd.Enabled = False
13 Me.ckNor.Enabled = False
14 Me.ckSys.Enabled = False
15 Me.cmdDel.Enabled = False
16 Me.chRO.Enabled = False
17 Me.cmdLastAcs.Enabled = False
18 Me.cmdLastCrt.Enabled = False
19 Me.cmdLastMod.Enabled = False
20 Me.cmdTyp.Enabled = False
21 Me.cmdSize.Enabled = False
End If
End If
End Sub
Penjelasan :
Maksud penggalan program di atas adalah jika variabel bufStr yang menampung panjang text
yang ada pada text box (txtDir.Text) memiliki panjang lebih dari 3 maka program dari no 2 sampai
dengan 11 akan dieksekusi jika tidak maka program dari no 12 sampai dengan 21 yang dieksekusi.
Kenapa sayratnya harus lebih dari 3 (>3) tujuannya untuk mencega agar alamat yang diinputkan
bukanlah driver karena driver biasanya ditulis dengan cara (C:\) yang memiliki panjang 3.
2 : Mengaktifkan Check Box Hidden
3 : Mengaktifkan Check Box Normal 11 : Mengaktifkan Button Delete
4 : Mengaktifkan Check Box System
5 : Mengaktifkan Check Box Read Only
6 : Mengaktifkan Button Last Accessed
7 : Mengaktifkan Button Last Creatred
8 : Mengaktifkan Button Last Modified
9 : Mengaktifkan Button Cek Size
10 : Mengaktifkan Button Type
bds_project 5
Private Sub ckHd_Click()
1 If ckHd.Value = vbChecked Then
2 If MsgBox("Folder ini ingin dibuat menjadi type Hidden", vbExclamation + _
vbOKCancel, "Konfirmasi") = vbOK Then
3 SetAttr txtDir.Text, vbHidden
4 Else
5 MsgBox "Proses Perubahan Dibatalkan", vbExclamation + vbOKOnly, _
"Pembatalan"
6 End If
7 End If
8 If ckHd.Value = vbUnchecked Then
9 SetAttr txtDir.Text, vbNormal
10 MsgBox "Sudah kembali dengan tipe normal", vbInformation + vbOKOnly, _
"Informasi"
11 End If
End Sub
Penjelasan :
Bagian ini digunakan untuk mengeset atribut dari folder saat check box dicentang, dan
mengembalikannya ke bentuk normal jika tidak dicentang. Untuk mengatur attribut dari folder, saya
menggunakan bantuan fungsi dari VB6 yaitu SetAttr. Berikut penjelasan dari fungsi SetAttr :
SetAttr
Mengatur informasi Attribute dari file dan folder.
Syntax SetAttr PathName, Attributes
PathName : Ekspresi String yang berisi alamat file atau folder.
Attributes : Bagian yang mengeset attribut untuk file atau folder.
Attribute Value Keterangan
vbNormal 0 Mengeset Attribute menjadi normal (Default)
vbReadOnly 1 Mengeset Attribute menjadi ReadOnly
vbHidden 2 Mengeset Attribute menjadi Hidden
vbSystem 4 Mengeset Attribute menjadi System
vbArchive 32 Mengeset Attribute menjadi Archive
Catatan : akan terjadi kesalahan jika kamu mengecek File atau Folder yang sedang dibuka.
1 : Apakah Check Box (ckhd) diceklish ?? jika ya program baris 2 sampai 6 dijalankan
2 : dilakukan pemberitahuan ke user. Apakah folder ingin diset hidden ?? jika ya baris 3 dieksekusi.
4 : mengeset attribute folder menjadi hidden.
10 : jika check box tidak diceklis maka baris 9 dan 10 dieksekusi.
11 : mengeset attribut menjadi Normal.
Private Sub chRO_Click()
1 If chRO.Value = vbChecked Then
2 If MsgBox("Folder ini ingin dibuat menjadi type Read-Only", vbExclamation +
vbOKCancel, "Konfirmasi") = vbOK Then
3 SetAttr txtDir.Text, vbReadOnly
4 Else
5 MsgBox "Proses Perubahan Dibatalkan", vbExclamation + vbOKOnly, _
"Pembatalan"
6 End If
bds_project 6
7 End If
8 If chRO.Value = vbUnchecked Then
9 SetAttr txtDir.Text, vbNormal
10 MsgBox "Sudah kembali dengan tipe normal", vbInformation + vbOKOnly, _
"Informasi"
11 End If
End Sub
Penjelasan :
Bagian ini akan dijalankan saat check box Read Only diceklis lalu mengeset atribut folder
menjadi read-only. Secara garis besar penjelasan tentang fungsi setAttr bisa dilihat pada penjelasan
sebelumnya.
1 : apakah check box Read-Only di ceklis ?? jika ya maka penggalan program 2 samapi 6 dieksekusi.
2 : konfirmasi... Jika tombol Ok ditekan eksekusi program no 2.
5 : akan dijalankan jika tombol cancel ditekan.
8 : akan dijalankan jika Check Box tidak diceklish.
9 : Set attribut menjadi normal.
Private Sub ckSys_Click()
If ckSys.Value = vbChecked Then
If MsgBox("Folder ini ingin dibuat Menjadi Type System", vbExclamation +
vbOKCancel, "Konfirmasi") = vbOK Then
SetAttr txtDir.Text, vbSystem
Else
MsgBox "Proses Perubahan Dibatalkan", vbExclamation + vbOKOnly,
"Pembatalan"
End If
End If
If ckSys.Value = vbUnchecked Then
SetAttr txtDir.Text, vbNormal
MsgBox "Sudah kembali dengan tipe normal", vbInformation + vbOKOnly,
"Informasi"
End If
End Sub
Penjelasan :
Penggalan program di atas akan dijalankan jika check box System diceklish lalu mengeset
attribut folder menjadi System, dan mengembalikannya menjadi normal jika Check Box tidak diceklis.
Catatan : Penjelasan sama seperti sebelumnya.
Private Sub ckNor_Click()
If ckNor.Value = vbChecked Then
If MsgBox("Folder ini ingin diNormalkan", vbExclamation + vbOKCancel,
"Konfirmasi") = vbOK Then
SetAttr txtDir.Text, vbNormal
Else
MsgBox "Proses Penormalan Dibatalkan", vbExclamation + vbOKOnly,
"Pembatalan"
End If
End if
Penjelasan :
Bagian ini digunakan untuk mengembalikan attribute folder menjadi Normal kembali jika
atribut dari folder tidak diset Normal. Jika sudah maka program langsung meloloskannya.
bds_project 7
Manipulasi Folder Dengan FSO (File System Object)
FSO (File System Object) adalah tools yang saya gunakan untuk membantu saya dalam
memproses atau mendapatkan informasi dari folder yang saya proses. FSO berbentuk file seperti DLL
maka dia diangap Reference dalam VB 6 maka kita harus mengaktifkan terlebih dahulu sebelum
memakainya. Untuk Button Delete, Cek Size, Last Modified, Last Create, Last Accessed, dan Type saya
menggunakan bantuan FSO. Dibagian ini saya coba untuk menjelaskan cara memanfaatkan FSO untuk
memanipulasi folder seperti mendelete, Mengukur Size, dan lain-lainnya. Selamat menikmatinya.
Cara Mengaktifkan FSO
1. Klik Tool Bar Project. (akan muncul gambar seperti dibawah ini).
2. Klik References. (yang ditunjuk panah). Lalu akan muncul :
Klik Bagian
ini
bds_project 8
3. Cari Microsoft Scripting Runtime lalu Ceklist pada bagian kotak yang tersedia dan tekan ok.
Cara Mendeklarasikan Dalam Program
Private FSO As New Scripting.FileSystemObject
Untuk pendelarasian FSO, Dekalrasikan pada bagian General dari Form. Ingat bagian General buka di
dalam Sub atau Fungsi tujuanya agar variabel FSO bisa diakses disemua sub pada Form Code. Jika
kamu mendeklarasikannya didalam fungsi atau sub maka variabel FSO hanya akan aktif didalam fungsi
atau sub tersebut.
Catatan : Untuk lebih jelas lihat artikel saya sebelumnya tentang ”Mempelajari FSO dalam 1.5 jam”
yang sudah saya upload ke indowebster, diartikel saya dijelaskan syntax dan fungsi-fungsi yang ada di
FSO. Bagi yang penasaran selamat mencari atau untuk lebih mudahnya hubungi saya melalui email
bds_programer@ymail.com.
Private Sub cmdDel_Click()
1 If Len(txtDir.Text) <> 0 Then
2 If MsgBox("Anda yakin berkeinginan untuk mendelet folder ini ??", _
vbExclamation + vbOKCancel, "Izin") = vbOK Then
3 fso.DeleteFolder txtDir.Text, True
4 MsgBox "Berhasil di-Delete", vbInformation + vbOKOnly, "Informasi"
5 Else
6 MsgBox "Pembatalan", vbExclamation + vbOKOnly, "Informasi"
7 End If
8 Else
9 MsgBox "Anda Belum Memasukan Alamat", vbCritical + vbOKOnly, "Error"
10 End If
End Sub
Penjelasan :
Penggalan program di atas akan dieksekusi saat tombol Delete ditekan.
1 : dicek apakah panjang dari text tidak sama dengan 0 ?? jika ya maka baris 2 hingga 4 dieksekusi
2 : dicek apakah user menekan tombol Ok pada message box yang muncul ?? jika ya maka baris 3
dieksekusi.
3: Instruksi untuk mendelet folder.
4 : menampilkan informasi bahwa folder telah didelet.
6 : akan dieksekusi saat user menekan tombol Cancel.
9 : akan dieksekusi saat teks masih kosong atau alamat folder belum diinputkan.
bds_project 9
Private Sub cmdLastMod_Click()
1 Dim bufStr As String
2 If Len(txtDir.Text) <> 0 Then
3 bufStr = fso.GetFolder(txtDir.Text).DateLastModified
4 MsgBox "Folder Terakhir Dimodifikasi Pada : " & bufStr, vbInformation + _
vbOKOnly, "Last Modified"
5 Else
6 MsgBox "Anda Belum Memasukan Alamat", vbCritical + vbOKOnly, "Error"
7 End If
End Sub
Penjelasan :
Bagian ini akan dijalankan saat Button Last modified diekan.
1 : deklarasi variabel bufStr, untuk menyimpan data hasil pemrosesan pada baris 3.
2 : dicek apakah alamat file kososong ?? jika tidak maka baris 3 sampai 4 dieksekusi.
3 : Menyimpan data berupa tanggal dan waktu terakhir kali folder dimodifikasi.
4 : Menampilkan informasi berupa tanggal dan waktu terkahirkali folder dimodifikasi dalam Message.
6 : dijalankan jika alamat folder pada txtDir sama dengan 0 (kosong).
Private Sub cmdLastCrt_Click()
1 Dim bufStr As String
2 If Len(txtDir.Text) <> 0 Then
3 bufStr = fso.GetFolder(txtDir.Text).DateCreated
4 MsgBox "Folder Terakhir Dibuat Pada : " & bufStr, vbInformation + _
vbOKOnly,"Last Created"
5 Else
6 MsgBox "Anda Belum Memasukan Alamat", vbCritical + vbOKOnly, "Error"
7 End If
End Sub
Penjelasan :
Bagian ini akan dijalankan saat Button Last Created ditekan. Secara garis besar sama dengan
program sebelumnya.
Private Sub cmdTyp_Click()
1 Dim bufStr As String
2 If Len(txtDir.Text) <> 0 Then
3 bufStr = fso.GetFolder(txtDir.Text).Type
4 MsgBox "Folder Type Adalah : " & bufStr, vbInformation + vbOKOnly, "Type _
Folder"
5 Else
6 MsgBox "Anda Belum Memasukan Alamat", vbCritical + vbOKOnly, "Error"
bds_project 10
7 End If
End Sub
Penjelasan :
Bagian ini akan dijalankan saat Button Type ditekan. Secara garis besar sama dengan program
sebelumnya.
Private Sub cmdLastAcs_Click()
1 Dim bufStr As String
2 If Len(txtDir.Text) <> 0 Then
3 bufStr = fso.GetFolder(txtDir.Text).DateLastAccessed
4 MsgBox "Folder Terakhir Diakses Pada : " & bufStr, vbInformation, _
"Last Accessed"
5 Else
6 MsgBox "Anda Belum Memasukan Alamat", vbCritical + vbOKOnly, "Error"
7 End If
End Sub
Penjelasan :
Bagian ini akan dijalankan saat Button Last Accessed ditekan. Secara garis besar sama dengan
program sebelumnya.
Private Sub cmdSize_Click()
1 Dim sz As Double
2 Dim buf As Double
3 If Len(txtDir.Text) <> 0 Then
4 sz = fso.GetFolder(txtDir.Text).Size
5 If sz > 1024 And sz < 1048576 Then
6 buf = FormatNumber(sz / 1024, 0, vbTrue)
7 MsgBox "Ukuran Foldernya Adalah : " & CStr(buf) & " KB", vbInformation _
, "Uuran Folder"
8 Else
9 buf = FormatNumber(sz / 1048576, 0, vbTrue)
10 MsgBox "Ukuran Foldernya Adalah : " & CStr(buf) & " MB", vbInformation _
, "Ukuran Folder"
11 End If
12 Else
13 MsgBox "Anda Belum Memasukan Alamat", vbCritical + vbOKOnly, "Error"
14 End If
End Sub
Penjelasan :
Penggalan program di atas akan dijalankan jika tombol Cek Size ditekan, penggalan program di
atas digunakan untuk menampilkan informasi berupa kapasitas dari folder dalam Kb atau Mb.
bds_project 11
1 : variabel yang digunakan untuk menyimpan kapasitas dari folder hasil pengembalian fungsi FSO. Nilai
yang dikembalikan dalam bentuk byte.
2 : variabel yang digunakan untuk menyimpan kapasitas folder dalam bentuk Kb dan Mb dari hasil
pemrosesan fungsi Format.
3 : dicek apakah alamat pada komponen txtDir kosong atau tidak ?? jika tidak maka baris 4 sampai 7
dieksekusi.
4 : dilakukan pengambilan kapasitas dari folder dengan menggunakan FSO. Hasilnya disimpan dalam
variabel sz dalam bentuk byte.
5 : dicek apakah kapasitasnya Lebih besar dari 1 Kb (2^10) dan lebih kecil dari 1 Mb (2^20) ?? jika ya
maka baris 6 dan 7 dieksekusi.
6 : merubah nilai (kapasitas dari folder) kedalam bentuk Kb. Lalu disimpan dalam variabel buf.
7 : menampilkan kapasitas dari folder dalam bentuk message.
9 : bagian ini akan dijalankan jika kapasitas dari folder lebih besar dari 1 Mb (2^20). Diubah satuan dari
kapasitas folder menjadi Mb dari byte dan menyimpannya dalam variabel buf.
10 : bagian ini juga dijalankan jika kapasitas dari folder lebih besar dari 1 Mb. Menampilkan kapasitas
dari folder dalam bentuk message.
13 : bagian ini akan dieksekusi jika alamat dari folder belum diinputkan.
”Masuk Ke Kode Untuk Membuat Browse Folder”
bds_project 12
MEMBUAT BROWSE FOLDER
Browse Folder ini dibuat untuk mempermudah user dalam menginputkan alamat dari folder
yang ingin dia proses sehingga user tidak perlu mengetikan alamat folder dengan cara mencarinya.
Broese Folder ini bukanlah bawaan dari VB maka kita harus membuatnya secara manual dengan cara
memprogram tentunya dengan bantuan Win 32 Api Function, jadi pada bagian ini saya juga akan
menjelaskan cara memanipulasi file-file library (DLL Dynamic Link Library) yang ada pada windows anda
melalui VB 6. Di bawah ini adalah tampilan dari Browse Folder yang saya buat.
Sekedar informasi ”Gambar di atas akan muncul jika button Browese.. ditekan”.
Catatan : Bagian ini dibuat dalam Module pada VB 6.
Cara menambah module : Klik Tool Bar ProjectI, lalu pilih Add Module.
Klik Bagian
ini
bds_project 13
Maka akan muncul gambar
Klik Button OK.
Lalu tuliskan kode pada bagian Module ini.
bds_project 14
Kode Program
Deklarasi Fungsi Win 32 API
1 Public Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
"SHBrowseForFolderA" (lpbi As BrowseInfo) As Long
2 Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd
As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
3 Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Boolean
4 Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Penjelasan :
1 :
Public Declare Function
Artinya fungsi SHBrowseForFolder bisa diakses pada form code dan module code.
Lib
Artinya diambil dari Library ”shell32.dll” file dll yang ada pada windows.
Alias
Memberi tahukan ke debuger VB 6 nama lain dari fungsi Win 32 API SHBrowseForFolder.
SHBrowseForFolder
Berfungsi untuk menampilkan Dialog Box yang memungkinkan User untuk memilih folder
melalui Graphic User Interface. Mengembalikan alamat dari item yang disorot oleh user, jika user
menekan tombol cancel maka pengembalian adalah Null String (string kosong).
Lpbi
Alamat dari struktur BrowseInfo yang mengandung informasi yang digunakan untuk
menampilkan Dialog Box (GUI Browse Folder).
BrowseInfo
Merupakan User Define Type (UDT) yang terdiri dari variabel-varibel yang bertindak sebagai
property untuk SHBrowseFolder. Penjelasan untuk bagian ini disertakan pada Sub Bab UDT sehabis
penjelasan Win 32 API.
2 :
SendMessage
Digunakan untuk memberitahukan ke windows tentang informasi apa yang ingin kita dapatkan
dari komponen yang kita gunakan dalam pembuatan aplikasi dengan VB 6.
hwnd
Digunakan untuk menangani destination window atau parameter yang mana message
dikirimkan. Biasanya diinputkan property hwnd dari komponen yang ingin kita proses. Contohnya
text1.hwnd.
bds_project 15
wMsg
parameter yang digunakan untuk menampung message yang dikirim. Dimasukan konstanta.
wParam
parameter pertama dari message.
lParam
Parameter kedua dari message.
Catatan : untuk wPram dan lPram data yang dimasukan berupa integer 32 bit atau LONG. Jika anda
belum paham penggunaan fungsi ini hubungi saya via e-mail di bds_programer@ymail.com agar saya
bisa mengirimkan contoh aplikasi dengan menggunakan fungsi ini berikut juga penjelasannya. Atau
cari di google.com ya.....
3 :
SHGetPathFromIDList
Adalah fungsi yang digunakan untuk merubah item yang diidentifikasikan ke dalam systen
pengalamatan file. Mudahnya merubah folder yang anda pilih menjadi informasi dalam bentuk alamat
dari root folder. Mengembalikan nilai True jika berhasil dan False jika gagal.
pidl
adalah parameter yang digunakan untuk menampung alamat dari list item yang
diidentifikasikan pada lokasi file atau folder itu berada yang relative pada root of the namespace
(Desktop).
pszPath
Parameter yang digunakan untuk menampung alamat dari folder hasil pemrosesan fungsi
SHGetPathFromIDList.
4 :
CoTaskMemFree
Adalah fungsi yang digunakan untuk membebaskan block dari memori yang telah digunakan
sebelumnya. Agar memory tidak terlalu terbebani saat user menekan tombol Browse berkali-kali.
hMem
adalah parameter yang digunakan untuk menampung varibel yang sebelumnya memakai
memory lalu ingin dihilangkan dari memory sehingga ukuran memory yang dipakai bisa dihilangkan.
Membuat UDT (User Defined Type) Untuk SHBrowseForFolder
Private Type BrowseInfo
1 hwndOwner As Long
2 pIDLRoot As Long
3 pszDisplayName As String
4 lpszTitle As String
5 ulFlags As Long
bds_project 16
6 lpfn As Long
7 lParam As Long
8 iImage As Long
End Type
Penjelasan :
UDT ini mengandung beberapa parameter untuk fungsi SHBrowseForFolder dan menerima
informasi tentang folder yang dipilih oleh user khusunya alamat dari folder itu berada.
1 : mengatur jendela (window) untuk tampilan browse folder.
2 : Alamat dari struktur ITEMIDLIST yang menentukan lokasi dari Root Folder dari folder yang di-
browsing. Hanya folder yang ditentukan dan bagian folder yang tampak dalam dialog box. Anggota ini
dapat bernilai Null, artinya Desktop Folder digunakan sebagai Root Folder.
Catatan : Biasanya Root Folder adalah folder WINDOWS. Akan tetapi karena kita isi 0 pada variabel
baris 2 maka Root Foldernya adalah Desktop.
3 : parameter yang digunakan untuk menerima alamat dari nama folder yang terlihat yang dipilih oleh
user. Untuk bagian ini kita harus mengalokasikan string kosong dengan panjang senilai konstanta
MAX_PATH yang diisikan karakter kosong tujuannya agar alamat hasil pemrosesan bisa ditempatkan
pada paramert ini untuk sementara waktu.
4 : parameter ini digunakan untuk menyimpan karakter yang nantinya akan ditampilkan pada bagian
atas dari GUI Browse For Folder.
5 : adalah penanda yang menentukan pilihan untuk dialog box. Untuk lebih jelas lihat tabel berikut :
Flags Keterangan
BIF_BROWSEFORCOMPUTER Hanya mengembalikan alamat komputer selebihnya button Ok tidak aktif
BIF_BROWSEFORPRINTER Hanya mengembalikan alamat printer selebihnya button Ok tidak aktif
BIF_BROWSEINCLUDEFILES Browse Dialog akan menampilkan icon dari file selayaknya folder.
BIF_DONTGOBELOWDOMAIN Folder Network tidak disertakan.
BIF_EDITBOX Hanya untuk versi 4.71
BIF_RETURNFSANCESTORS Hanya mengembalikan system Ancestors selain itu button Ok tidak aktif
BIF_RETURNONLYFSDIRS Hanya mengembalikan alamat folder selain itu button Ok tidak aktif.
BIF_STATUSTEXT Menyertakan status area dalam Dialog Box.
BIF_VALIDATE Hanya untuk versi 4.71
6 : Alamat dari fungsi aplikasi yang didefinisikan yang DialogBox panggil ketika Aplikasi Di Load di
memory.
7 : Nilai aplikasi yang terdefinisi yang DialogBox lalui ke fungsi CallBack.
8 : varibel untuk menerima Image yang ditentukan pada folder yang dipilih. Image ditentukan sebagai
index untuk system Image List.
bds_project 17
Deklarasi Konstanta
Private Const MAX_PATH = 260
Private Const BIF_RETURNOLYFSDIRS = 1
Private Const BIF_STATUSTEXT = 4
Private Const WM_USER = &H400
Private Const BFFM_INITIALIZED = 1
Private Const BFFM_SELCHANGED = 2
Private Const BFFM_SETSTATUSTEXTA = (WM_USER + 100)
Private Const BFFM_SETSELECTIONA = (WM_USER + 102)
Catatan : untuk bagian ini saya sengaja tidak beri penjelasan.
Deklarasi Variabel General
Private fDefaultFolder As String
Membuat Fungsi Browse Folder
1 Public Function BrowseFolder(DefaultFolder As String, Optional hwndForm _
As Long = 0, Optional Caption As String = "") As String
2 Dim Bi As BrowseInfo
3 Dim inpt As String
4 Dim bufHasil As Long, strHasil As String
5 Bi.hwndOwner = hwndForm
6 Bi.pIDLRoot = 0
7 Bi.pszDisplayName = String$(MAX_PATH, Chr$(0))
8 If Caption <> "" Then
9 Bi.lpszTitle = Caption
10 Else
11 If MsgBox("Anda Belum Memasukan Keterangan Untuk Browse Folder" _
12 & vbNewLine & "Klik Ok Untuk Membuat Keterangan" & vbNewLine & _
13 "Klik Cancle Agar Nama Sesuai Dengan Default", _
14 vbExclamation + vbOKCancel, "Peringatan") = vbOK Then
15 inpt = InputBox("Masukan Keterangan di sini", "Input Box")
16 If Len(inpt) <> 0 Then
17 Bi.lpszTitle = inpt
18 Else
19 MsgBox "Anda Belum Memasukan Satu Karakter Pun", _
20 vbCritical, "ERROR"
21 End If
22 Else
23 Bi.lpszTitle = "Pilih Foldernya :"
bds_project 18
24 End If
25 End If
26 Bi.ulFlags = BIF_RETURNOLYFSDIRS
27 Bi.lpfn = GetAddress(AddressOf AmbilAlamat)
28 Bi.lParam = 0
29 Bi.iImage = 0
30 fDefaultFolder = DefaultFolder
31 bufHasil = SHBrowseForFolder(Bi)
32 If bufHasil <> 0 Then
33 strHasil = String$(MAX_PATH, Chr$(0))
34 If SHGetPathFromIDList(bufHasil, strHasil) Then
35 BrowseFolder = Left$(strHasil, InStr(Hasil, Chr$(0)) - 1)
36 End If
37 CoTaskMemFree bufHasil
38 End If
39 End Function
Penjelasan :
Fungsi ini adalah fungsi yang saya buat untuk mempermudah saya dalam proses pencarian
folder melalui browse folder. Untuk fungsi ini saya mendeklarasikannya dengan Public tujuannya agar
fungsi ini bisa diakses tidak hanya pada bagian Module tetapi juga pada bagian Form Code, parameter
yang saya gunakan adalah DefaultFolder, hwndForm, Caption. Parameter DefaultFolder digunakan
untuk memasukan Object berupa komponen Text Box untuk menamampilkan alamat dari folder yang
telah dipilih oleh User. Parameter hwndForm digunakan untuk memasukan Object berupa hWnd yang
merupakan kepanjangan dari (Handel of Window) dari Form aplikasi, khusus untuk bagian ini loloskan
parameter ini dengan menuliskan Me.hwnd. Parameter Caption digunakan untuk memasukan Kalimat
yang nantinya akan muncul, untuk paramter ini bertype String jadi anda hanya bisa meloloskan object
yang bertype String saja.
bds_project 19
2 : adalah variabel yang akan menampung UDT BrowseInfo.
3 : variabel yang digunakan untuk menampung keluaran String dari fungsi Input Box yang digunakan
untuk menginputkan kalimat untuk Caption bagi Dialog Box (Browse For Folder).
4 : bufHasil variabel yang digunakan untuk menampung keluaran dari fungsi Win 32 API _
SHBrowseForFolder, variabel strHasil digunakan untuk menampung hasil pemrosesan alamat folder
dari fungsi Win 32 API SHGetPathFromIDList yang nantinya akan menjadi keluaran untuk fungsi yang
saya buat yaitu BrowseFolder berupa alamat dari folder yang anda pilih.
5 : atrinya yang mengatur window dari dialog box Browse For Folder adalam Me.hwnd atau Form1 atau
aplikasi yang saya buat.
6 : bagian ini diisi dengan nilai 0 agar yang menjadi Root Folder adalah Desktop.
7 : mengisi paramet pszDisplayName dengan Null String sepanjang MAX_PATH tujuannya saya
menyiapkan tempat untuk karakter sepanjang MAX_PATH yang nantinya digunakan untuk Buffer
alamat folder yang dipilih user.
8 : dilakukan apakah User sudah memasukan Kalimat ke bagian Caption ?? jika sudah baris 9 dieksekusi
jika belum maka baris 11 sampai dengan 24 dieksekusi. Inti dari baris 11 dan 24 adalah memberikan
kalimat pada bagian Caption agar bisa tampil pada bagian DialogBox (Browse For Folder). Jadi bagian 11
hingga 24 saya tidak jelaskan karena mudah dimengerti.
26 : mengisi flag DialogBox (Browse For Folder). Penjelasan bisa lihat pada tabel yang telah saya buat
sebelumnya.
27 : mengisi alamat dari fungsi aplikasi yang didefinisikan yang dialog box panggil saat event (program)
berjalan. Fungsinya adalah NowBrowse. Program untuk bagian ini disertakan nanti.
28 : isi dengan 0. Karena kita tidak menggunakan ini.
29 : isi dengan 0. Karena kita tidak menggunakan ini.
30 : menyimpan isi DefaultFolder pada variabel fDefaultFolder yang dideklarasikan pada bagian General
agar bisa diakses pada semua Sub atau Fungsi yang ada pada bagian Module Code.
31 : Menampung keluaran dari fungsi SHBrowseForFolder yang telah terisi oleh UDT BI (BrowseInfo)
yang disimpan pada variabel bufHasil.
Selanjutnya kita buat filter...
32 : dicek apakah varibel bufHasil yang menerima keluaran dari fungsi win 32 api SHBrowseForFolder
tidak sama dengan 0 (artinya ada folder yang diproses) ??? jika ya maka baris 33 sampai dengan 37
dieksekusi.
33 : menyiapkan ruangan kosong dalam format String dengan panjang MAX_PATH yang digunakan
untuk menampung alamat dari folder hasil pemrosesan fungsi win 32 api SHGetPthFromIDList.
bds_project 20
34 : dicek apakah kita alamat ada ?? jika ya maka keluaran fungsi ini adalah True jika tidak False.
35 : membuat keluaran fungsi BrowseFolder yang kita buat = alamat dari folder yang kita pilih.
37 : mengosongkan memory yang digunakan untuk menampung alamat sementara dari folder yang
ada pada variabel bufHasil.
Private Function AmbilAlamat(almtFungsi As Long) As Long
AmbilAlamat = almtFungsi
End Function
Penjelasan :
Fungsi diatas digunakan untuk mengembalikan alamat dari fungsi yang diinputkan ke bagian
parameter almtFungsi, karena agar bisa diproses pada bagian BI.lpfn.
Private Function Browsing(ByVal hwnd As Long, ByVal uMsg As Long, ByVal lParam As
Long, ByVal lpData As Long) As Long
Select Case uMsg
Case BFFM_INITIALIZED:
If fDefaultFolder <> 0 Then
SendMessage hwnd, BFFM_SETSELECTIONA, True, ByVal fDefaultFolder
End If
End Select
End Function
Penjelasan :
Secara keseluruhan fungsi ini digunakan untuk memberitahukan ke OS WINDOWS folder mana
yang sedang kita proses atau kita pilih, proses pengiriman informasi ini ke windows menggunakan
fungsi win 32 api SendMessage. BFFM_INITIALIZED merupakan nilai konstanta yang dapat anda lihat
pada bagian konstanta, saya dapat nilai konstanta ini dari situs MSDN dan juga forum Extream Visual
Basic 6.
Catatan : jika anda ingin ahli memprogram dengan VB6 sering-seringlah kunjungi dua situs ini via
internet, dan banyak bertanyalah pada ahlinya... saya hanya bisa membantu membuat artikel tentang
VB6 dari program-program yang berhasil saya buat.
”Akhir dari program untuk membuat aplikasi manipulasi folder”
”Atas nama pembuat saya ucapkan selamat mempelajari”
bds_project 21
Penutup
Jika ada pertanyaan atau menemukan sesuatu yang mengganjal dari artikel ini atau dari aplikasi
yang saya sertakan, anda bisa menanyakan atau mendiskusikan hal-hal tersebut melalui e-mail saya di
bds_programer@ymail.com atau via sms di 081317817842 jika anda memiliki rasa ingin tahu yang
tinggi dan juga memilki semangat untuk belajar.
Artikel selanjutnya insya allah adalah “Cara Membuat Aplikasi Notepad” doakan saya agar bisa terus
berkarya.. Amien….
Artikel ini dibuat dan disusun oleh Bayu Dwi Saputra. Jika ada pihak-pihak yang tidak
bertanggung jawab menjual belikan artikel ini atau membukukan artikel ini tanpa seijin pembuat
artikel, Pihak pembuat artikel ini bisa menuntu pelaku ke pengadilan.
Artikel ini saya buat bagi anda yang ingin mempelajari, memahami, dan membuat suatu aplikasi
dengan VB 6. jika ada kesalahan dan kekurangan dari artikel ini saya mohon maaf sebesar-besarnya.
Atas nama pembuat saya ucapkan selamat mempelajari dan memahami artikel ini semoga bermanfaat
bagi kalian.
Tentang Pembuat
Nama saya Bayu Dwi Saputara lahir Bekasi, 4 juni 1989, sekarang saya
masih duduk dibangku kuliahan tepatnya di Universitas Gadjah Mada
Yogyakarta (UGM) mengambil Program Studi Elektronika & Instrumentasi
(S1). Hobby saya adalah Membaca Buku, Membuat aplikasi-aplikasi dengan
VB 6, Nonton Film, Mendengarkan Music Classic, dan Touring. Saat ini saya
sedang memperdalam pemrograman DataBase dengan VB 6, pada saatnya
nanti saya akan membuat artikel-artikel yang berkenaan tentang DATABASE.
Mari kita terus berkaya sesuai dengan kemampuan kita masing-masing. Kita tunjukan pada
dunia bahwa anak Indonesia mampu bersaing dengan anak dari Negara lain.
“Don’t ask what your country can do for you but ask what you can do for your country”
top related