Cara Menampilkan File Yang Berada di Folder Kedalam ComboBox dengan Kode VB6

Pada artikel kali ini Admin akan berbagi sebauah kode untuk menampilkan nama-nama file yang berada di dalam folder ke Combobox.

Untuk menampilkan file ke dalam ComboBox ini kita akan mengkombinasikan dengan tambahan metode Folder Browse atau FloderView.

Output

Berikut dibawah ini adalah langkah-langkah untuk menampilkan File ke ComboBox yang ada di dalam Folder :

1. Tambahkan beberapa Label, 1 CommandButton dan 1 ComboBox ke dalam Form

2. Desainlah Form seperti Gambar dibawah ini

Desain Form

3. Tambhakan 1 buah Module dan ketik kode dibawah ini di Module1 :

Private Type BrowseInfo
    hwndOwner      As Long
    pIDLRoot       As Long
    pszDisplayName As Long
    lpszTitle      As Long
    ulFlags        As Long
    lpfnCallback   As Long
    lParam         As Long
    iImage         As Long
End Type

Private Const BIF_BROWSEFORCOMPUTER = &H1000
Private Const BIF_BROWSEFORPRINTER = &H2000
Private Const BIF_BROWSEINCLUDEFILES = &H4000
Private Const BIF_DONTGOBELOWDOMAIN = &H2
Private Const BIF_EDITBOX = &H10
Private Const BIF_NEWDIALOGSTYLE = &H40
Private Const BIF_RETURNFSANCESTORS = &H8
Private Const BIF_RETURNONLYFSDIRS = &H1
Private Const BIF_STATUSTEXT = &H4
Private Const BIF_USENEWUI = (BIF_NEWDIALOGSTYLE Or BIF_EDITBOX)


Private Const MAX_PATH = 260
Private Declare Sub CoTaskMemFree Lib "ole32.dll" _
    (ByVal hMem As Long)
Private Declare Function lstrcat Lib "kernel32" _
    Alias "lstrcatA" (ByVal lpString1 As String, _
    ByVal lpString2 As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32" _
    (lpBI As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" _
    (ByVal pidList As Long, ByVal lpBuffer As String) As Long
Const CSIDL_DESKTOP = &H0
Const CSIDL_PROGRAMS = &H2
Const CSIDL_CONTROLS = &H3
Const CSIDL_PRINTERS = &H4
Const CSIDL_PERSONAL = &H5
Const CSIDL_FAVORITES = &H6
Const CSIDL_STARTUP = &H7
Const CSIDL_RECENT = &H8
Const CSIDL_SENDTO = &H9
Const CSIDL_BITBUCKET = &HA
Const CSIDL_STARTMENU = &HB
Const CSIDL_DESKTOPDIRECTORY = &H10
Const CSIDL_DRIVES = &H11
Const CSIDL_NETWORK = &H12
Const CSIDL_NETHOOD = &H13
Const CSIDL_FONTS = &H14
Const CSIDL_TEMPLATES = &H15
Const CSIDL_COMMON_STARTMENU = &H16
Const CSIDL_COMMON_PROGRAMS = &H17
Const CSIDL_COMMON_STARTUP = &H18
Const CSIDL_COMMON_DESKTOPDIRECTORY = &H19
Const CSIDL_APPDATA = &H1A
Const CSIDL_PRINTHOOD = &H1B

Private Type SHITEMID
    Cb   As Long
    AbID As Byte
End Type

Private Type ITEMIDLIST
    Mkid As SHITEMID
End Type

Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ITEMIDLIST) As Long
Private Declare Function OleInitialize Lib "ole32.dll" (lp As Any) As Long
Private Declare Sub OleUninitialize Lib "ole32" ()


Private Function fGetSpecialFolder(CSIDL As Long, IDL As ITEMIDLIST) As String
Dim sPath As String
If SHGetSpecialFolderLocation(hWnd, CSIDL, IDL) = 0 Then

    sPath = Space$(MAX_PATH)
    If SHGetPathFromIDList(ByVal IDL.Mkid.Cb, ByVal sPath) Then
        fGetSpecialFolder = Left$(sPath, InStr(sPath, vbNullChar) - 1) & "\"
    End If
End If
End Function


Public Function fBrowseForFolder(hwndOwner As Long, sPrompt As String) As String
Dim iNull    As Long
Dim lpIDList As Long
Dim lResult  As Long
Dim sPath    As String
Dim sPath1   As String
Dim udtBI    As BrowseInfo
Dim IDL      As ITEMIDLIST
'
sPath1 = fGetSpecialFolder(CSIDL_DESKTOP, IDL)
Call OleInitialize(ByVal 0&)

With udtBI
    .pIDLRoot = IDL.Mkid.Cb

    .hwndOwner = hwndOwner
    .lpszTitle = lstrcat(sPrompt, "")
    .ulFlags = BIF_RETURNONLYFSDIRS + BIF_USENEWUI
End With

lpIDList = SHBrowseForFolder(udtBI)

If lpIDList Then
    sPath = String$(MAX_PATH, 0)
    lResult = SHGetPathFromIDList(lpIDList, sPath)
    Call CoTaskMemFree(lpIDList)
    
    iNull = InStr(sPath, vbNullChar)
    If iNull Then sPath = Left$(sPath, iNull - 1)
End If

Call OleUninitialize
fBrowseForFolder = sPath
End Function

4. Kemudian kembali ke Form utama, pada Form ketik kode dibawah ini :

Public nStrPath As String

Private Sub Command1_Click()

Dim nLokasifile As String
nLokasifile = fBrowseForFolder(hWnd, "Folder Browse File")
If nLokasifile <> vbNullString Then
   Label2.Caption = nLokasifile
   
   Combo1.Clear
   nStrPath = nLokasifile
   ListFiles nStrPath, "*.*"
End If
End Sub

Private Sub ListFiles(strPath As String, Optional Extention As String)
    Dim File As String
    Dim nNomor As Long
    If Right$(strPath, 1) <> "\" Then strPath = strPath & "\"
       
    If Trim$(Extention) = "" Then
        Extention = "*.*"
    ElseIf Left$(Extention, 2) <> "*." Then
        Extention = "*." & Extention
    End If
       
    File = Dir$(strPath & Extention)
    nNomor = 0
    Do While Len(File)
        nNomor = nNomor + 1
        Me.Combo1.AddItem "(" & nNomor & ")  " & File
        File = Dir$
    Loop
    Label3.Caption = "Jumlah File : " & nNomor
End Sub

Private Sub Form_Load()
Label2.Caption = ""
Combo1.Text = "isi file"
Combo1.Locked = True
End Sub

Untuk menampilkannya jalankan Project Anda dan tekan tombol Browse untuk mencari nama Folder yang isinya akan kita tampilkan kedalam ComboBox dan tekan OK, kemudian isi file akan terlihat di ComboBox dengan cara klik DropDown.

Demikianlah artikel singkat pada hari ini tentang Cara Menampilkan File Yang Berada di Folder Kedalam ComboBox dengan Kode VB6 , semoga aretikel ini bermanfaat buat kita semua,Amin.

Selamat mencoba semoga berhasil.


No comments: