PDA

Visualizza la versione completa : [VB] replicare la common dialog


Lally
13-12-2001, 14:05
Ciaooooo....

Qualcuno di Voi ha idea di come faccia il controllo common dialog a permettere di esplorare tutte le risorse di sistema?

Per motivi diversi, ho bisogno di replicare il funzionamento della common dialog per salvare una "moltitudine" di file in un botto solo. Non voglio che l'utente inserisca il nome del file, perchè lo assegno io da codice.
Vorrei solo capire come cavolo faccio a dire ad un controllo DirListBox che deve permettermi di esplorare anche le risorse di rete, perchè gli utenti potrebbero avere la necessità salvare su uno dei duemila server sparsi in giro...
Il DirListBox mostra solo i driver mappati, e come ben sapete, non tutti gli utenti sono capaci di mappare un disco... l'explorer gli piace di piu' perchè gli fa vedere tutto senza sbattimenti...

Idee ???

Eventualmente, pensavo di modificare la common dialog disabilitando il text box del nome file, o con qualche altro stratagemma ... ma il problema resta: quella finestra non è conforme alle specifiche di layout...
Insomma AIUTO.

Ricciolo
13-12-2001, 17:27
mmm suggerirei di usare lo sfoglia cartelle dello shell32.dll
Eccoti un esempio
Quando clicchi:

Private Sub Sfoglia_Click()
On Error Resume Next
Dim Id As BROWSEINFO
Dim R As Long
Dim s As String * 260
R = SHBrowseForFolder(Id)
If R = 0 Then Exit Sub
If SHGetPathFromIDList(R, s) = 1 Then
s = Left(s, InStr(s, Chr(0)) - 1)
NomeCartella = Trim(s)
CoTaskMemFree R
End If
End Sub


Se vuoi chiarimenti dimmelo. La cartella selezionata la memorizza nella variabile nomeCartella.
Ops, mancano le dichiarazioni per usare le api.

Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpbi As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)

Ciao ciao

Ricciolo
14-12-2001, 09:29
mi sono dimenticato la struttura

Private 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

Bisco
29-01-2003, 10:46
Sapete per caso come si fa ad impostare la directory iniziale dello "sfoglia cartelle"?

grazie

Bisco
31-01-2003, 12:43
up

l.golinelli
31-01-2003, 12:53
VEDERE IL FORUM PER VISUAL BASIC... NON INQUINATECI IL NOSTRO! :dhò:

Loading