Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178

    [VB6] Esplora Risorse

    vorrei creare una specie di esplora risorse (magari con una TreeView) in vb, in modo da poter facilmente gestire i driver e le cartelle, e visuallizzare i file delle cartelle in una listbox (ad esempio in una filelistbox).
    ho provato ad usare drivelistbox e dirlistbox... ma sono decisamente spartane e "difficili" da usare per l'utente che non è abiutuato.

    è possibile?

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    ti posso assicurare che costruirti una sorta di "File Manager" con TreeView e ListView lo è senz'altro di più.

    innanzi tutto devi crearti una routine ricorsiva che ti permetta di esplorare a partire da un certo percorso (ad esempio C:\), tutte le cartelle e le sottocartelle in esso contenute, nonchè tutte le cartelle contenute nelle sottocartelle etc...

    poi devi andare alla ricerca dei files all'interno della cartella selezionata e visualizzarli in una ListView...

    insomma, non è per dissuaderti dal tuo impegno, ma se trovi difficile l'utilizzo dei componenti DirListBox e FileListBox, forse è il caso di pensarci 2 volte prima di intraprendere questa strada, che è senz'altro più impegnativa

    Boolean

  3. #3
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    forse ai capito male... intendevo dire che DirListBox e FileListBox sono brutti e poco usuali... e non intendevo dire che sono difficili da usare in vb, anzi.
    cmq è davvero cosi difficile costruire un "file manager"?
    in alternativa... a me basterebbe solo rendere DirListBox e FileListBox più usuali... potrei creare una DirListBox e una FileListBox ed "importare" tutto il contenuto di entrambre in una treeview, in modo di creare qualcosa di simile all'allegato qua sotto
    Immagini allegate Immagini allegate

  4. #4
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Originariamente inviato da Artemio
    forse ai capito male... intendevo dire che DirListBox e FileListBox sono brutti e poco usuali... e non intendevo dire che sono difficili da usare in vb, anzi.
    non non credo di aver capito male... ho semplicemente letto quello che hai scritto:

    Originariamente inviato da Artemio
    ma sono decisamente spartane e "difficili" da usare per l'utente che non è abiutuato
    Originariamente inviato da Artemio
    cmq è davvero cosi difficile costruire un "file manager"?
    se è difficile o no dipende dalle tue conoscenze in merito.
    uno spunto su come iniziare tel'ho dato:

    devi creare una routine ricorsiva che ti permetta di partire da un percorso e "pescare" tutte le cartelle in esso contenute, controllando che ci siano dentro di esse altre cartelle ed analizzarle... e così via...
    questo è il "motore" principale... l'organizzazione su TreeView, o altro è una cosa successiva.

    Boolean

  5. #5
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    non lo so fare
    meglio lasciar perdere (intendo che se ci sono da usare API è meglio lasciar perdere, ma se non ci sono riesco a cavarmela)...
    e per quanto avevo scritto prima? credi sia possibile da fare?

    in alternativa... a me basterebbe solo rendere DirListBox e FileListBox più usuali... potrei creare una DirListBox e una FileListBox ed "importare" tutto il contenuto di entrambre in una treeview, in modo di creare qualcosa di simile all'allegato qua sotto

  6. #6
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    non occorrono API...

    personalmente ho preferito utilizzare il FileSystemObject

    per il metodo alternativo, suppongo non ci siano particolari problemi, a parte forse il metodo poco "performante"...

    dovresti fare un ciclo su tutti gli elementi della DirListBox, quindi sui relativi files rilevati sulla FileListBox, cui passi come path la cartella rilevata dalla DirListBox, e "ricostruisci" tutto su un TreeView...

    Boolean

  7. #7
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    niente API?
    non è che mi sapresti dire dove posso trovare un piccolo esempio? così ci lavoro su.
    in qualsiasi caso grazie mille dell'help! gentile come sempre

    p.s. per il metodo "alternativo" avevo pure io una mezza idea del genere, ma esiste un modo per ottenere la directory del desktop dell'utente in uso e dei documenti?

  8. #8
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    in un nuovo Form metti una ListBox e un CommandButton.

    poi usa questo codice:

    codice:
    Dim FSO As Object
    
    Private Sub Command1_Click()
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ScanFolders "C:\Programmi"
    End Sub
    
    Sub ScanFolders(Path As String)
    
    If Right$(Path, 1) <> "\" Then Path = Path & "\"
    
    Set BASEPATH = FSO.GetFolder(Path)
    
    For Each FLD In BASEPATH.SubFolders
        List1.AddItem FLD.Path
        ScanFolders FLD.Path
        DoEvents
    Next FLD
        
    End Sub
    al click sul Command1, avrai nella ListBox tutti i percorsi di cartelle e sottocartelle a partire da C:\Programmi

    Boolean

  9. #9
    Utente di HTML.it L'avatar di Artemio
    Registrato dal
    Jan 2006
    Messaggi
    178
    grazie mille ho capito come funziona più o meno... solo una cosa cosè "Scripting.FileSystemObject"? non capisco... un controllo? una specie di ocx?

  10. #10
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    è una libreria che possiede anche dei metodi di accesso al file system.

    esattamente si tratta della Microsoft Scripting Runtime (scrrun.dll)

    che volendo puoi referenziare nel progetto (la trovi tra i riferimenti) per avere a disposizione tutte le proprietà e i metodi che essa mette a disposizione.

    io ho usato il late binding, ma se vuoi puoi utilizzare l'early binding dichiarando FSO esplicitamente come FileSystemObject, dopo averla referenziata, quindi:

    codice:
    Dim FSO As FileSystemObject
    
    Sub Form_Load() ' o dove ti serve
    Set FSO = New FileSystemObject
    End Sub
    oppure direttamente:

    codice:
    Dim FSO As New FileSystemObject
    Boolean

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.