Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: CommonDialog kysymys

AdeRide [07.08.2005 14:00:58]

#

Onko mahdollista CommonDialogilla selata kansioita vai onko sen pakko olla tiedosto, fontti, väri tai jotain muuta paskaa se homma.

Nyt olisi nimittäin käyttöö kansion selauksesta CommonDialogissa.

Muut CommonDialog aiheet oli suljettu, joten en voinut kysyä siellä.

[EDIT]

Ei tarvitsekkaan vastata. Mä löysin vastauksen ja laitan sen nytten tänne, että tästä ois sitten muille hyötyä.

moduuliin:

Option Explicit

Public 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

Public Const BIF_RETURNONLYFSDIRS = 1
Public Const MAX_PATH = 260

Public Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Public Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Public Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long

Public Function BrowseForFolder(hwndOwner As Long, sPrompt As String) As String

    'declare variables to be used
     Dim iNull As Integer
     Dim lpIDList As Long
     Dim lResult As Long
     Dim sPath As String
     Dim udtBI As BrowseInfo

    'initialise variables
     With udtBI
        .hwndOwner = hwndOwner
        .lpszTitle = lstrcat(sPrompt, "")
        .ulFlags = BIF_RETURNONLYFSDIRS
     End With

    'Call the browse for folder API
     lpIDList = SHBrowseForFolder(udtBI)

    'get the resulting string path
     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

    'If cancel was pressed, sPath = ""
     BrowseForFolder = sPath

End Function

Formiin:

Private Sub cmdServerBrowse_Click()
 txtDatabasePath.Text = BrowseForFolder(hwnd, "Please select a Server folder.")
End Sub

Blaze [07.08.2005 14:22:45]

#

CommonDialog-kontrollissa tuota ei ole, mutta sen hakemistoselausdialogin saa kyllä jollain APIlla, jota nyt en ulkoa muista. Googleta 'visual basic directory select dialog' tms.

Edit: olen hidas.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta