"Selecteer map" dialoogscherm

Status
Niet open voor verdere reacties.

Jappa S

Gebruiker
Lid geworden
3 jul 2008
Berichten
12
Hola Allemaal,

ik heb het volgende probleem:
ik heb code die een dialoogscherm toont om een map te selecteren. Dit werkt volledig naar behoren op 1 ding na. Het lukt me niet goed om een beginmap mee te geven. Er wordt altijd begonnen bij het bureablad, ik wil dit zelf kunnen aangeven. Dit lukt me zelfs, echter kan je dan geen niveau meer omlaag, alleen nog omhoog. Dus als je C:\Map Y\Map X instelt kan je nooit meer in Map Y komen, alleen Map X en de daarboven liggende mappen.
Die beginmap wil ik mee geven wanneer het dialoogscherm voor de 2e keer wordt aangeroepen, deze map moet dan dezelfde zijn als die de 1e keer werd geselecteerd.

Dit is de code die ik gebruik:

Code:
'constante voor de mapbrowser
Public Type BROWSEINFO
   hOwner           As Long
   pidlRoot         As Long
   pszDisplayName   As String
   lpszTitle        As String
   ulFlags          As Long
   lpfn             As Long
   lParam           As Long
   iImage           As Long
End Type

Public Const BIF_RETURNONLYFSDIRS = &H1
Public Const BIF_DONTGOBELOWDOMAIN = &H2
Public Const BIF_NEWDIALOGSTYLE As Long = &H40
'Public Const BIF_STATUSTEXT = &H4
'Public Const BIF_RETURNFSANCESTORS = &H8
'Public Const BIF_BROWSEFORCOMPUTER = &H1000
'Public Const BIF_BROWSEFORPRINTER = &H2000
Public Const MAX_PATH = 260

Public Declare Function SHGetPathFromIDList _
   Lib "shell32.dll" Alias "SHGetPathFromIDListA" _
  (ByVal pidl As Long, _
   ByVal pszPath As String) As Long

Public Declare Function SHBrowseForFolder Lib "shell32.dll" _
   Alias "SHBrowseForFolderA" _
  (lpBrowseInfo As BROWSEINFO) As Long


Code:
Sub SelecteerMap()

  Dim bi As BROWSEINFO
  Dim pidl As Long
  Dim path As String
  Dim pos As Integer
  Dim strDoelmap As String
  Dim strBijlage As String
  
  Dim x As Integer
  
  For x = 1 To 2
    'message to be displayed in the Browse dialog
      bi.lpszTitle = "Selecteer de doelmap"
    'the type of folder to return.
      bi.ulFlags = BIF_RETURNONLYFSDIRS + BIF_NEWDIALOGSTYLE + BIF_DONTGOBELOWDOMAIN
      
      'geef de root aan, als nog niet bekend is het 0, dit is het bureablad, anders is _
      het de eerst gekozen map
      bi.pidlRoot = pidl
      
    'show the browse for folders dialog
      pidl = SHBrowseForFolder(bi)
    'the dialog has closed, so parse & display the
    'user's returned folder Selection contained In pidl
      path = Space$(MAX_PATH)
      If SHGetPathFromIDList(ByVal pidl, ByVal path) Then
        pos = InStr(path, Chr$(0))
        'MsgBox Left(path, pos - 1)
        strDoelmap = Left(path, pos - 1)
        'voeg aan het einde \ toe als deze er niet staat
        If Right(strDoelmap, 1) <> "\" Then
           strDoelmap = strDoelmap & "\"
           
        End If
        MsgBox strDoelmap
    End If
    
   Next x
End Sub

in "Pidl" staat dus een getal wat de geselecteerde map voorstelt.

Iemand enig idee??
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan