Dialog Box

Cthulhu

Mitglied
Hallo

ich habe nur ein kleines Problem, habe jedoch noch nichts darüber im Forum gefunden.
Ich möchte in einer Dialogbox das Kriterium angeben, dass nur Ordner ausgewählt werden können.

Merci im Voraus

Cthulhu
 
Zuletzt bearbeitet:
Soweit ich weiß, geht das mit dem CommonDialog von Microsoft nicht! (kann mich natürlich auch irren :rolleyes: )

Nun hast du zwei Möglichkeiten. Entweder du suchst nen anderes Steuerelemt (weiß leider nicht welches) oder du proggst dir so ein Dialog selbst!
 
es gibt eins, kann man per API Funktion auswählen:

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 Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

Private Sub Command1_Click()

Dim hd As Long, retval As Long, pfad as String

hd = SHBrowseForFolder(nfo)
retval = SHGetPathFromIDList(hd, pfad)
pfad = RTrim(pfad)

End Sub
 
Hallo

Danke für die Hilfe. Leider verstehe ich den Code nicht wirklich gut. Es kommt auch immer eine Fehlermeldung wegen "nfo"? Was ist das?


Gruss

Cthulhu
 
Danke für die Hilfe. Leider verstehe ich den Code nicht wirklich gut. Es kommt auch immer eine Fehlermeldung wegen "nfo"? Was ist das?
Setz dich etwas mit der MSDN auseinander, das ist der Schlüssel zur Windows-Programmierung :) :) :)

Code:
' erstellt eine Datenstruktur
Type BROWSEINFO
  hwndOwner 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


' hier deklarieren wir die Prototypen für die beiden API-Funktionen, die in einer
' C oder C++ DLL sind
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

' Eventhandler eines Buttons namens "Command1"
Private Sub Command1_Click()

  ' ein paar Variablen
  Dim hd As Long, retval As Long, pfad as String
  Dim nfo As BROWSEINFO ' eine Variable vom Typ BrowseInfo 
  ' mit einem Punkt "." können wir auf einzelne Elemente zugreifen sollten wir auch
  nfo.hwndOwner = Me.Hwnd ' oder so hab gerade kein VB da
  nfo.lpszTitle = "Der Titel"
 ' usw... je nachdem was man braucht, man kann auch bei einem bestimmten
 ' Ordner starten (Eigene Dateien, Programme, Netzwerkumgebung, usw...)

  hd = SHBrowseForFolder(nfo) ' Aufruf des Dialogs
  retval = SHGetPathFromIDList(hd, pfad) ' den Pfad aus holen
  pfad = RTrim(pfad) ' die Leerzeichen weg trimmen
End Sub

So oder so ähnlich könnte das aussehen, links:
http://www.vbarchiv.net/vbapi/SHBrowseForFolder.php
http://msdn.microsoft.com/library/d...ell/reference/functions/shbrowseforfolder.asp

Gruss Homer
 
Verdammt! Da war ich wohl ein bisschen zu schnell, hab das ganze einfach schnell reingeschreiben, hab da wohl ein bisschen was vergessen :-(
Aber das mit dem "nfo" hättest du auch ruhig selbst rasukriegen können ;)

Wenn du was nicht blickst such einfach immer erstmal auf
http://www.activevb.de
http://www.vbarchiv.net

da findest du das meiste, ansonsten komm hierher :rolleyes:
 
Zurück