Newsgroup: it.comp.appl.access
Titolo: Automatizzare il link alle foto con una sorta di esplora risorse (non sapevo come dirlo scusate!)

Salve,
mi ricollego al vecchio post dove volevo visualizzare l'immagine delle
copertine dei Divx legando il campo immagine al campo path, che attualmente
compilo manualmente, bene, ho un nuovo quesito su una funzione che vorrei
implementare, ve la espongo:
per la compilazione del campo path, vorrei creare una sorta di esplora
risorse che mi permetta di sfogliare le cartelle e una volta individuato il
file a me necessario, se lo seleziono e clicco su un ipotetico pulsante OK,
questo mi genera un'azione che va a scrivere il percorso completo del file
nel campo path ...
problema ... non so da che parte cominciare per gestire un "esplora risorse"
e per proseguire con la creazione di ciň che vorrei implementare.
Qualcuno se la sente di aiutarmi per la messa in opera di questa funzione?
GRazie anticipatamente e buona giornata,
-- 
strano...mavero
L'universo č cambiamento; la nostra vita č il risultato dei nostri pensieri.
Marco Aurelio

 GRazie anticipatamente e buona giornata,
PRIMA FASE : 
Crea un modulo e  chiamalo "modBrowseFolderDialog"
Option Compare Database
Option Explicit
'This code was originally written by Terry Kreft.
'It is not to be altered or distributed,
'except as part of an application.
'You are free to use it in any application,
'provided the copyright notice is left unchanged.
'
'Code courtesy of
'Terry Kreft
Private Type BROWSEINFO
  hOwner 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
Private Declare Function SHGetPathFromIDList Lib "Shell32.dll" Alias _
            "SHGetPathFromIDListA" (ByVal pidl As Long, _
            ByVal pszPath As String) As Long
 
Private Declare Function SHBrowseForFolder Lib "Shell32.dll" Alias _
            "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
            As Long
 
Private Const BIF_RETURNONLYFSDIRS = &H1
Private Const BIF_DONTGOBELOWDOMAIN = &H2
Private Const BIF_STATUSTEXT = &H4
Private Const BIF_RETURNFSANCESTORS = &H8
Private Const BIF_BROWSEFORCOMPUTER = &H1000
Private Const BIF_BROWSEFORPRINTER = &H2000
Public Function BrowseFolder(szDialogTitle As String) As String
  Dim x As Long, bi As BROWSEINFO, dwIList As Long
  Dim szPath As String, wPos As Integer
    With bi
        .hOwner = hWndAccessApp
        .lpszTitle = szDialogTitle
        .ulFlags = BIF_RETURNONLYFSDIRS
    End With
    dwIList = SHBrowseForFolder(bi)
    szPath = Space$(512)
    x = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
    If x Then
        wPos = InStr(szPath, Chr(0))
        BrowseFolder = left$(szPath, wPos - 1)
    Else
        BrowseFolder = ""
    End If
    If Right(BrowseFolder, 1) = "\" Then BrowseFolder = mID$(BrowseFolder,
1, Len(BrowseFolder) - 1)
End Function
-- 
Pablitomf (Maurizio Facciuti)
“Quando non ti eserciti ricorda che qualcuno in qualche posto si sta
allenando e, quando lo incontrerai, ti batterà”.
Ed Macauley 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

"strano...mavero" <mauro @ bi-elle . it> wrote in message 
news:cjiuk5$7ur$1...@lacerta.tiscalinet.it...

Puoi utilizzare Richiamare la finestra di dialogo per la selezione di un 
file.
  di Stefano Bettini
Eventualmente personalizzando il percorso di apertura.
Presente nel 
www.sitocomune.com
ciao 

 > GRazie anticipatamente e buona giornata,
SECONDA (e ultima) FASE : 
Ipotizzo il Tuo_Campo come campo di destinazione del percorso Path e un
Tuo_Pulsante dal quale apri il tuo Gestione Risorse:
Sull'evento Clik del Tuo_Pulsante metti : 
On Error GoTo fine:
Me.Tuo_Campo = BrowseFolder("Tuo_Messaggio_di_intestazione")
fine:
Va bene?
Ciao


[cut]
Grazie,
oggi provo e Vi faccio sapere, ma viste le fonti, sono molto ottimista!
-- 
strano...mavero
L'universo è cambiamento; la nostra vita è il risultato dei nostri pensieri.
Marco Aurelio

 Qualcuno se la sente di aiutarmi per la messa in opera di questa funzione?
Trovi degli esempi gią fatti sul Sito Comune...

 Va bene?
Va strabene ma...dopo che seleziono l'unità C
la folder catalogo
la folder IMG
posso solo premere ok e mi scive la path ... io però vorrei vedere tutti i
files contenuti, selezionare quello che voglio usare (*.jpg) e inserire
anche questo nel percorso path della maschera per poterlo visualizzare,
capisci?
Diciamo che dovrei essere al 90% del lavoro!!!!
-- 
strano...mavero
L'universo è cambiamento; la nostra vita è il risultato dei nostri pensieri.
Marco Aurelio

[cut]
Ma la procedura che mi hai postato, è modificabile per la visione dei file
contenuti nella directory, perchè alla fine, io volevo memorizzare la path
del file, comprendendone però anche il nome del file stesso.
Grazie


Quanto segue l'ho trovato googlandoe funziona parzialmente:
Option Compare Database
Option Explicit
Private Declare Function GetOpenFileName Lib "comdlg32.dll" _
            Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
   lStructSize As Long
   hwndOwner As Long
   hInstance As Long
   lpstrFilter As String
   lpstrCustomFilter As String
   nMaxCustFilter As Long
   nFilterIndex As Long
   lpstrFile As String
   nMaxFile As Long
   lpstrFileTitle As String
   nMaxFileTitle As Long
   lpstrInitialDir As String
   lpstrTitle As String
   flags As Long
   nFileOffset As Integer
   nFileExtension As Integer
   lpstrDefExt As String
   lCustData As Long
   lpfnHook As Long
   lpTemplateName As String
End Type
Public Function cmdlg_file()
   Dim OpenFile As OPENFILENAME
   Dim lReturn As Long
   Dim sFilter As String
   OpenFile.lStructSize = Len(OpenFile)
   sFilter = "Immagini (*.jpg)" & Chr(0) & "*.jpg" & Chr(0)
   OpenFile.hwndOwner = Application.hWndAccessApp
   OpenFile.lpstrFilter = sFilter
   OpenFile.nFilterIndex = 1
   OpenFile.lpstrFile = String(257, 0)
   OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
   OpenFile.lpstrFileTitle = OpenFile.lpstrFile
   OpenFile.nMaxFileTitle = OpenFile.nMaxFile
   OpenFile.lpstrInitialDir = "C:\locazioni\foto"
   OpenFile.lpstrTitle = "Trova file jpg"
   OpenFile.flags = 0
   lReturn = GetOpenFileName(OpenFile)
   If lReturn = 0 Then
      cmdlg_file = ""
   Else
      cmdlg_file = Left(OpenFile.lpstrFile, InStr(OpenFile.lpstrFile,
Chr$(0)) - 1)
      Forms![tbl_locazioni]!PATH = cmdlg_file
   End If
End Function
Vorrei che all'atto della pressione del pulsante apri mi memorizzasse il
path del file nel campo PATH della maschera frm_LOCAZIONI ... cosa devo
modificare ... attualmente quando trovo il file se clicco sul pulsante apri
... non succede niente, o almeno, non mi rendo conto di cosa accada ...
...mi sono arenato!
-- 
strano...mavero
L'universo è cambiamento; la nostra vita è il risultato dei nostri pensieri.
Marco Aurelio

"strano...mavero" <mauro @ bi-elle . it> ha scritto nel messaggio
news:cjj86p$k9c$1...@lacerta.tiscalinet.it...

Ciao strano...mavero,
se quanto hai scritto nella descrizione della rivista č corretto io
procederei cosě:
toglierei dalla function l'istruzione :
 Forms![tbl_locazioni]!PATH = cmdlg_file
in questo modo la stessa funzione puoi usarla su form diverse
e metterei sul click del pulsante Sfoglia che si trova nella form
frm_locazioni:
me.PATH = cmdlg_file()
Ciao
Cinzia

 ...mi sono arenato!
Ti sei arenato .... ma hai notato che sul sito comune esistono almeno due
.mdb con tanto di esempi annessi e connessi per gestire immagini?

 Grazie
allora scrivi quest'altro modulo e chiamalo "generale"
'Funzione da richamare per la finestra di aggiunta file
Public Function cmdlg_file(DirInizio As String)
   'Autore: Stefano Bettini
   'Restituisce: il percorso completo del file selezionato
   Dim OpenFile As OPENFILENAME
   Dim lReturn As Long
   Dim sFilter As String
   OpenFile.lStructSize = Len(OpenFile)
   sFilter = "Ogni files (*.*)" & Chr(0) & "*.*" & Chr(0)
   OpenFile.lpstrFilter = sFilter
   OpenFile.nFilterIndex = 1
   OpenFile.lpstrFile = String(257, 0)
   OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
   OpenFile.lpstrFileTitle = OpenFile.lpstrFile
   OpenFile.nMaxFileTitle = OpenFile.nMaxFile
   OpenFile.lpstrInitialDir = DirInizio
   OpenFile.lpstrTitle = "Selezione file"
   OpenFile.flags = 0
   lReturn = GetOpenFileName(OpenFile)
   If lReturn = 0 Then
      cmdlg_file = ""
   Else
      cmdlg_file = Left(OpenFile.lpstrFile, InStr(OpenFile.lpstrFile,
Chr$(0)) - 1)
      'cmdlg_file = Left(OpenFile.lpstrFileTitle,
InStr(OpenFile.lpstrFileTitle, Chr$(0)) - 1)
   End If
End Function
e poi nel clik del comando....
Me.Tuo_Campo = cmdlg_file("C:\")
Funge?


[cut]
Funziona!!!
Grazie Cinzia

 ha scritto nel messaggio
news:%za7d.17492$H11.5...@twister1.libero.it...

Ciao Simone,
sicuramente ci sono, ma oggi è uno strano venerdì per me ... ci ho anche
guardato, ma credimi, non gli ho trovati. La prossima volta presterò più
attenzione.
Ciao!


 attenzione.
Non so che dirti: creare nuovi TH su un ng. per dibattere di cose ampiamente
trattate sul relativo sito comune, mi pare perlomeno discutibile...
Saluti, Simone


...me lo hai fatto notare giusto?
Mi sono scusato, giusto?
Ho sbagliato, capita, giusto?
Non c'è niente da discutere a questo punto, ho commesso solo un errore di
disattenzione.
Passo e chiudo.


 Passo e chiudo.
Puň darsi che ti abbia frainteso: dal tono della tua risposta pareva di
capire:
"sě, ci saranno pure quegli esempi, ma non m'interessa".
Nel caso ti abbia frainteso: mi scuso.
Ciao, Simone

 ha scritto nel messaggio
news:Ycc7d.17680$H11.5...@twister1.libero.it...

Tranquillo, non mi permetterei mai di discutere con nessuno in questo Ng, č
troppo importante per la mia crescita professionale!
Stringiamoci la mano virtualmente allora!!!
-- 
strano...mavero
L'universo č cambiamento; la nostra vita č il risultato dei nostri pensieri.
Marco Aurelio


Ho messo anche:
Me.IMMAGINE.Picture = cmdlg_file()   nell'evento click del bottone
Così facendo immetto automaticamente l'immagine, ma se passo a un nuovo
record e inserisco il collegamento verso un'altra immagine, anche sui record
precedenti visualizzo sempre l'ultima linkata ... come mai?



Si essendo Immagine un campo non associato,  ogni volta gli associa il  file
nuovo, per fargli tenere quello vecchio
metti Me.Immagine.Picture = me.Path
Sempre che non sia in maschere continue perchč in questo caso č un
macello...
Ciao
Cinzia


Ok, ma in alcuni casi il campo path è vuoto perchè non ho ancora l'immagine
... mi da errore, non posso dare la condizione che quando il campo path e
nullo allora l'immagine non deve cercarla, altrimenti si?
Cosa dovrei scrivere e sarebbe giusto metterlo su apertura maschera vero?
Ciao e scusa per il martellamento, ma mi sta incuriosendo molto la cosa!!!
-- 
strano...mavero
L'universo è cambiamento; la nostra vita è il risultato dei nostri pensieri.
Marco Aurelio

"strano...mavero" <mauro @ bi-elle . it> ha scritto nel messaggio
news:cjjpi0$2bo$1...@lacerta.tiscalinet.it...

No meglio metterlo su Corrente, perchè se lo metti su apertura maschera lo
fa solo quando apri la maschera e non anche quando cambi record.
per testare che path non sia vuoto puoi usare:
if not isnull(me.path) then
        Me.Immagine.Picture = me.Path
end if
Saluti
Cinzia