CommonDialog




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

'In una procedura dove sara' necessario aprire un file

'invece imposteremo la struttura nel modo adeguato e

'richiameremo la funzione GetOpenFileName:


Dim ofname As OPENFILENAME
Dim Ret as Long
With ofname
.lStructSize = Len(ofname)
.hwndOwner = Screen.ActiveForm.hwnd
.lpstrFilter = "Tutti i file" & vbNullChar _
& "*.*" & "File di testo" & vbNullChar & "*.txt" _
& vbNullChar

.nFilterIndex = 2
.lpstrDefExt = "txt"
.Flags = cdlOFNFileMustExist Or cdlOFNPathMustExist
.lpstrTitle = "Apertura file di testo"
.nMaxFile = 356
.lpstrFile = Space$(255)
.lpstrInitialDir = ""
End With
Ret = GetOpenFileName(ofname)

'La funzione restituisce zero se l'utente preme il pulsante

'Cancel. Il nome del file da aprire viene restituito

'nell'elemento lpstrFile , sotto forma di stringa

'null-reminated, se sono stati selezionati piu' file ogni

'nome di file viene separato dal carattere nullo e la fine

'della stringa viene segnalata da un doppio carattere nullo

'L'elemento nFilterIndex viene modificato dalla funzione

'API per rispecchiare il filtro selezionato dall'utente.


'Per mostrare una common dialog File Save si dovranno

'eseguire gli stessi passaggi ma richiamando la funzione

'GetSaveFileName. 'Non e' realmente necessario utilizzare l'OCX Common Dialog

'per richiamare una dialog File Save o File Open.

'Visto che l'OCX in realta' e' solo un intrefaccia con le

'API per facilitare l'uso di queste dialog, si puo' anche

'evitarne l'uso e richiamare le funzioni API direttamente.

'Il guadagno nel richiamare direttamente le API invece di

'utilizzare la classica OCX sono:


'· un utilizzo inferiore delle risorse del sistema

'· la riduzione dello spazio occupato sul disco dalla

' applicazione, dato che non ci sara' bisogno di dover

' includere l'OCX e i file di supporto nel pacchetto


'· si potra' utilizzare un modulo standard o di classe al

' posto di un form contenente il controllo Common Dialog


'Per poter richiamare un dialog File Save o File Open si

'utilizzeranno le funzione API GetSaveFileName e

'GetOpenFileName. Queste funzioni attendono come argomento

'una struttura OPENFILENAME per essere utilizzate

'correttamente. Vediamo un esempio:


'Nella dichiarazione generale di un modulo e' necessario

'descrivere la struttura OPENFILENAME:











( commondialog.html )- by Paolo Puglisi - Modifica del 17/12/2023