Newsgroup: it.comp.appl.access
Titolo: Link a folder immagini ...

Ciao a tutti. Prendendo spunto dagli ottimi lavori attinti dal sito comune
(implementare un archivio di immagini) di Stefano Bettini e Silvio Savoldi,
che colgo l'occasione per ringraziare di cuore, ho costruito la mia piccola
funzione per collegare il campo apposito  del record (tipo collegamento
ipertestuale)direttamente al path delle foto. Mi manca un piccolo dettaglio
che però con la mia nulla conoscenza di API non riesco a risolvere:
posso far aprire il browser per sfogliare le cartelle da una directory
predefinita anziché dalla radice? mi spiego meglio: posso far partire il
browser da c:\immagini\archivio anzichè da c:\ ?
Grazie in anticipo.
Ciao
--
~~
PGP key available on keyservers Key ID  0x2E67E58E
Finger print 9EEA D8A0 2A3E DFBA CF50  A830 EC58 C8EB 2E67 E58E


certo che puoi
che funzione hai usato?
se usi la cmdlg_file
setta il valore che si chiama :
openFile.lpstrInitialDir

 openFile.lpstrInitialDir
Eccola:
'versione in italiano (utilizzata)
Declare Function SfogliaPerCartelle Lib "shell32.dll" _
Alias "SHBrowseForFolderA" _
(lpINFOSFOGLIA As INFOSFOGLIA) As Long
Declare Function AcquisisciPercorsoDaLista Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal strPercorso As String) As Long
' Tipo personalizzato specifico per selettore cartelle
Private Type INFOSFOGLIA
 hProprietario As Long
 pidlRadice As Long
 pszMostraNome As String
 lpszTitolo As String
 ulFlag As Long
 lpfn As Long
 lParam As Long
 iImmagine As Long
 End Type
 Public Function SfogliaCartella(strTitoloFsDialogo As String)
 Dim lngX As Long, bi As INFOSFOGLIA, lngLista As Long
 Dim strPercorso As String, intPosizione As Integer
 With bi
  .hProprietario = hWndAccessApp
  .lpszTitolo = strTitoloFsDialogo
 End With
 lngLista = SfogliaPerCartelle(bi) 'chiama la funzione API
 strPercorso = Space$(512) ' crea una stringa di 512 spazi
 ' chiama la funzione API
 lngX = AcquisisciPercorsoDaLista(ByVal lngLista, ByVal strPercorso)
 If lngX Then
 intPosizione = InStr(strPercorso, Chr(0))
 SfogliaCartella = Left$(strPercorso, intPosizione - 1)
 Else
 SfogliaCartella = ""
 End If
 End Function
 'Routine esecutiva
 Sub SelezionaCartella()
 Dim strNomeCartella As String
 strNomeCartella = SfogliaCartella("Selezionare la cartella")
 If InStr(strNomeCartella, "\") <> 0 Then
 'MsgBox strNomeCartella
 Forms!InsDirFoto!Path = strNomeCartella
 Else
 MsgBox "Cartella non selezionata"
 End If
 End Sub
Ho usato questa perchè l'ho trovata anche in un esempio di Costruire
applicazioni con Access di Mike Davis. Quella a cui ti riferisci tu l'ho
presa dal sito comune ma mi sono incasinato ... Con questa qui sopra come
potrei fare ?
Ciao e grazie per la risposta

[CUT]
mi dispiace ma sul Browser di selezione directory non so come operare, ho fatto alcuni tentativi ma
non ne sono saltato fuori :-)
quello che conosco meglio (o meglio ha piů variabili...) č quello di selezione file (quello ceh ti
ho precedentemente detto.
se ho una illuminazione divina in argomento ti farň sapere :-)
ciao


Ti ringrazio comunque per la risposta. Tra l'altro studiandomi meglio la
funzione credevo di aver risolto con un escamotage. Mi spiego: tra gli altri
parametri del Tipo utente INFOSFOGLIA c'č quello pidlRadice as long. Con
debug ho quindi individuato il long corrispondente alla dir che volevo
mettere come radice di partenza e sembrava tutto ok .. peccato pero' che
quando spegni il pc l'id del percorso varia al nuovo riavvio, e quindi sono
punto e a capo. La funzione sfoglia file che indicavi tu andrebbe benissimo
se riuscissi pero' a fermarmi al livello della directory, senza selezionare
alcun file ...
ciao e grazie ancora