Newsgroup: it.comp.lang.visual-basic
Titolo: Come aprire un requester?

Ciao a tutti, come posso aprire un requester che mi chiede la DIRECTORY dove
deve prendere i dati da elaborare...
Ho provato con il CommonDialog.ShowOpen, ma mi chiede il file e se non lo
scelgo non mi fa' continuare... come posso fare???
Ciao ;^)=
--
Massimo "Red Foxy" Ciccio'
Home Page: 
http://www.redfoxy.go.to/
Web Master di:
 - Libreria Ciofalo: 
http://www.ciofalo.it
 - Quantum Leap: 
http://ql.programmazione.it
.<-------- Se ricevo spam denuncio l'autore al server ------->.
.o0 ------------------------------------------------------- 0o.
.o0 --------- Dentro ognuno di noi c'e' un animale, ------- 0o.
.o0 ----------- sta' a noi scoprirlo e domarlo ------------ 0o.
.o0 ------------------------------------------------------- 0o.
.o0 --- Non c'e' uomo che non abbia paura dell'animale, --- 0o.
.o0 --------- non esiste uomo che non sia animale --------- 0o.
.o0 ------------------------------------------------------- 0o.
.o0 ------------------------------------------- Red Foxy -- 0o.

C'è una soluzione più elegante: utilizzando la finestra di sfoglia cartelle.
ecco il codice:
Public Type BROWSEINFO
    hOwner As Long 'handle del form da cui si chiama la finestra di dialogo
    pidlRoot As Long
    pszDisplayName As String
    lpszTitle As String 'titolo della finestra di dialogo
    ulFlags As Long   'tipo vedi flag successivi
    lpfn As Long
    lParam As Long
    iImage As Long
End Type
'Flags
Public Const BIF_RETURNONLYFSDIRS = &H1 'permette di selezionare solo
cartelle e drive
Public Const BIF_DONTGOBELOWDOMAIN = &H2 'non include cartelle di rete
Public Const BIF_STATUSTEXT = &H4
Public Const BIF_RETURNFSANCESTORS = &H8
Public Const BIF_BROWSEFORCOMPUTER = &H1000
Public Const BIF_BROWSEFORPRINTER = &H2000
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Private Sub Command1_Click()
Dim bInf As BROWSEINFO
Dim RetVal As Long
Dim PathID As Long
Dim RetPath As String
Dim Offset As Integer
'Imposta le proprietà della cartella
bInf.hOwner = Me.hWnd
bInf.lpszTitle = "Selezionare una cartella:" + Chr(0) 'prompt sotto la barra
del titolo
bInf.ulFlags = BIF_RETURNONLYFSDIRS 'permette di selezionare solo cartelle
'Mostra la finestra cartella standard
PathID = SHBrowseForFolder(bInf)
'legge il path del cassetto selezionato usando la funzione Api
SHGetPathFromIDList() che legge il path dal valore ritornato dalla
SHBrowseForFolder()
'il path viene messo nella stringa passata come secondo argomento
'la funzione ritorna 0 se l'utente ha premuto il tasto Annulla mentre 1 se
ha premuto OK
RetPath = Space$(512) + Chr(0) 'alloca ...
RetVal = SHGetPathFromIDList(ByVal PathID, ByVal RetPath)
If RetVal Then
    Offset = InStr(RetPath, Chr$(0)) 'cerca il carattere terminatore perchè
in seguito lo elimina
    MsgBox "La cartella selezionata è:" & Chr$(10) & Chr$(10) & _
    Left$(RetPath, Offset - 1) + " Questo percorso può essere utilizzato nei
programmi!", vbInformation, " Esempio"
Else            'ritorna 0 se l'utente ha premuto ANNULLA
    MsgBox "Operazione annullata!", vbInformation, _
    "Cartella"
End If
End Sub
Ciao
Lorenzo

Grandioso, funziona!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Grazie 10000000000000!!!!!!! :)
