Newsgroup: it.comp.lang.visual-basic
Titolo: Common Dialog. AIUTO!

Ciao a tutti ragazzi.
Vi espongo subito il mio problema.
Io uso un controllo CommonDialog, e lo apro in modalità SHOW. Vorrei
che quando clicco poi sul pulsante APRI, mi venisse restituito il path
senza il nome del file.
Io mi catturo tutto con la proprietà .FileName, trovo l'ultima
occorrenza del carattere "\" con la funzione InStrRev, e tronco il
File name con la funzione Left. (se sapete un metodo migliore sarei
lieto se me lo diceste!)
Cmq fin qui tutto ok, il fatto è che se premo apri senza aver selto un
file, il controllo non si chiude, e non ottengo nessun valore nella
proprietà FileName...
Cioè quello che in realtà io vorrei, è far selezionare una cartella
all'utente, e non un file: lui deve selezionare un folder, e io me ne
memorizzo il percorso nel db... poi lì ci farò varie operazioni:
backup, copie di file, ecc. Il problema è che con il controllo
commondialog non si può selezionare una cartella, ma si deve scegliere
per forza un file.
Non so se avete capito... spero di si, e mi fareste un piacere a
rispondermi perchè è urgente.
Grazie a tutti. Ciauz.

 wrote in message lYqQOPKCxmzOJ1e2eRKrEYqm=z...@4ax.com...


Incolla questo codice in un modulo comune (.bas) e poi richiami la procedura
'BrowseForDirectory' e gli passi l' hWnd del chiamante, ad esempio
Dim m_DirResult as String
m_DirResult = BrowseForDirectory(Me.hWnd)
If m_DirResult <> "" Then
        'Qui fai le tue considerazioni ......
End If
'CUT HERE
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::
'Dichiarazioni
    Private Type BrowseInfo
        hWndOwner As Long
        pidlRoot As Long
        sDisplayName As String
        sTitle As String
        ulFlags As Long
        lpfn As Long
        lParam As Long
        iImage As Long
    End Type
    Public Declare Function SHBrowseForFolder Lib "Shell32.dll" (bBrowse As
BrowseInfo) As Long
Option Explicit
Public Function BrowseForDirectory(ByVal hWndObj As Long) As String
Dim Browse_Info As BrowseInfo
Dim Item As Long
Dim Dir_Name As String
   Browse_Info.hWndOwner = hWndObj
   Browse_Info.pidlRoot = 0
   Browse_Info.sDisplayName = Space$(260)
   Browse_Info.sTitle = "Select Directory"
   Browse_Info.ulFlags = 1 ' Return directory name.
   Browse_Info.lpfn = 0
   Browse_Info.lParam = 0
   Browse_Info.iImage = 0
   Item = SHBrowseForFolder(Browse_Info)
   If Item Then
       Dir_Name = Space$(260)
       If SHGetPathFromIDList(Item, Dir_Name) Then
           BrowseForDirectory = Left(Dir_Name, InStr(Dir_Name, Chr$(0)) - 1)
       Else
           BrowseForDirectory = ""
       End If
   End If
End Function
'END CUT HERE
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::
Se ti va fammi sapere com' è andata ok ????
Saluti Luigi ..........
    mailto : 
ara...@libero.it

Path = left$(commondialog.filename, len(commondialog.filename) -
len(commondialog.filetitle))


 wrote:
Grazie funziona!!!
Ma ti eri dimenticato di inserire la dichiarazione della funzione
SHGetPathFromIDList, che riporto qui di seguito nel caso possa servire
a qualcuno.
Public Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias
"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String)
As Long
(Va tutta in una riga! ;-) )
Ancora grazie e ciao!