Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    165

    [vb6] percorso cartella selezionata con COMMON DIALOG

    Ciao a tutti,
    il vostro incubo è tornato
    avrei bisogno di una cosa che voi saprete risolvere all istante.
    In pratica sto utilizzando per la prima volta il common dialog per l esplorazione e la selezione di una cartella.
    fin qui tutto a posto (si apre la finestra e mi fa selezionare la cartella)

    Problema: vorrei salvare il percorso delle cartella in una text. come faccio????
    Qui sotto vi posto il codice che ho utilizzato fin qui:

    codice:
    Private Const BIF_RETURNONLYFSDIRS = 1
    Private Const BIF_DONTGOBELOWDOMAIN = 2
    Private Const BIF_BROWSEFORCOMPUTER = &H1000
    Private Const MAX_PATH = 260
    Private Declare Function SHBrowseForFolder Lib "shell32" _
    (lpbi As BrowseInfo) As Long
    Private Declare Function SHGetPathFromIDList Lib "shell32" _
    (ByVal pidList As Long, _
    ByVal lpBuffer As String) As Long
    Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" _
    (ByVal lpString1 As String, ByVal _
    lpString2 As String) As Long
    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
    questo è il codice del Command Button:
    codice:
       Dim lpIDList As Long
        Dim sBuffer As String
        Dim szTitle As String
        Dim tBrowseInfo As BrowseInfo
        szTitle = "Seleziona la certella in cui sono salvati i file di testo:"
        With tBrowseInfo
            .hwndOwner = Me.hWnd
            .lpszTitle = lstrcat(szTitle, "")
            .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
        End With
        lpIDList = SHBrowseForFolder(tBrowseInfo)
    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Hai già la funzione per farlo:

    SHGetPathFromIDList

    usala, non serve altro.


  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    165
    Innanzi tutto grazie per la risposta...

    scusa per l'ignoranza ma devo inserire questo in fondo al cmd????

    codice:
        txt_caread.Text = SHGetPathFromIDList(lpIDList, sBuffer)


  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da gioviskius
    Innanzi tutto grazie per la risposta...

    scusa per l'ignoranza ma devo inserire questo in fondo al cmd????

    codice:
        txt_caread.Text = SHGetPathFromIDList(lpIDList, sBuffer)

    La funzione restituisce un Long, a che ti serve assegnarlo ad un TextBox?

    Guardi qui:
    http://allapi.mentalis.org/apilist/S...omIDList.shtml

    Se usi le API questo sito contiene ottimi esempi, pratici e mirati.
    Puoi scaricarti anche l'ottimo APIGuide (vedi tra i link della pagina) con esempi di oltre 900 funzioni API.


  5. #5
    Originariamente inviato da gibra
    La funzione restituisce un Long, a che ti serve assegnarlo ad un TextBox?

    Guardi qui:
    http://allapi.mentalis.org/apilist/S...omIDList.shtml

    Se usi le API questo sito contiene ottimi esempi, pratici e mirati.
    Puoi scaricarti anche l'ottimo APIGuide (vedi tra i link della pagina) con esempi di oltre 900 funzioni API.

    Concordo con gibra: per completezza e per facilitarti la questione ti informo che esiste un componente, chiamato appunto CommonDialog: dalle sue poche proprietà e metodi riuscirai sicuramente ad ottenere ciò che chiedi.

    Ciao

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da MdE2005
    Concordo con gibra: per completezza e per facilitarti la questione ti informo che esiste un componente, chiamato appunto CommonDialog: dalle sue poche proprietà e metodi riuscirai sicuramente ad ottenere ciò che chiedi.

    Ciao
    Il CommonDialog standard non ha il BrowseForFolder, quindi deve essere implementato a parte.

    Comunque, per rispondere sempre a gioviskius, se non si vuole farne un uso avanzato (ad esempio il callback) c'è un'altro modo davvero più semplice per usare il BrowseForFolder:

    codice:
    'BROWSEFORFOLDER semplice:
    Dim sMyDir As String
    Dim sMsg As String
    Const ssfPERSONAL = 5    ' si può sostituire con altro identificatore di 'SpecialFolder'
    sMsg = "Messaggio nella finestra"
    On Error Resume Next
    sMyDir = CreateObject("Shell.Application").BrowseForFolder(0, sMsg, 0, ssfPERSONAL).Self.Path
    If sMyDir <> "" Then MsgBox "Hai selezionato la cartella: " & sMyDir

  7. #7
    In realtà, se non mi ricordo male, esiste anche un metodo molto "artigianale": te lo posto, tuttavia premettendoti che, non avendo a disposizione VB6, non sono sicuro del suo reale funzionamento.
    codice:
    dim nomecartella as String
    With CommonDialog1
    .DialogTitle = "Seleziona Cartella"
    .CancelError = True
    .Filter = "Tutti i file (*.*)|*.*|"
    .InitDir = "C:\"
    .FileName = "    "
    .Flags = cdlOFNHideReadOnly
    .ShowSave
    nomecartella= UCase(Left(.FileName, Len(.FileName) - Len(.FileTitle)))
    End With
    e ovviamente nella variabile nomecartella dovresti avere il nome della cartella che hai selezionato.


    Ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    165
    Grazie a tutti......


    Ho risolto con il BrowseForlder di Gibra

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    165
    Perche se premo annulla nel BrowseFolder di Gibra mi da questo errore:



    "Variabile Oggetto o variabile del blocco With non Impostata"


    Grazie anticipatamente

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.