VB5, VB6
El CommonDialog control no es la única manera de acceder a los diálogos comunes de windows. Microsoft nos da una dll en los cd's de VB 5 y VB 6 que mide la mitad que el ComDlg32.ocx y no necesita poner un control en un formulario y, lo mejor de todo, tiene una propiedad Center. Para los detalles de instalación debeis mirar en \Tools\Unsupprt\DlgObj en el cd de VB5 (o \VB98\WIZARDS\PDWIZARD en el de VB6)
Añadid una referencia a DlgObjs seleccionando Microsoft Dialog Automation Objects en Proyecto | Referencias. Este código obtiene un nombre de fichero:
Public Function GetFilename(WinHandle As Long) As String
Dim Dlg As ChooseFile
On Error Resume Next
Set Dlg = New ChooseFile
With Dlg
.Save = True
' Queremos un diálogo "Grabar como"
.Center = True
' Queremos el diálogo centrado
.hWnd = WinHandle ' Necesitamos una ventana padre
.HideReadOnly = True
' No necesitamos el checjkox 'Abrir sólo lectura'
.MultiSelect = False
' No seleccionamos múltiples ficheros
.OverwritePrompt = True
' Preguntar antes de sobreescribir un fichero
.Filters.Add "BAS Files (*.bas):*.bas" ' Máscara de los ficheros
.Filters.Add "All Files (*.*):*.*" ' Máscara de los ficheros
If .Show Then
GetFilename =.Directory & "\" & .filename
Else
GetFilename = "" ' El usuario presionó Cancelar
End With
Set Dlg = Nothing
End Function
Llama a GetFileName pasándole el handle de la ventana que actua como padre.
Debug.Print GetFilename(Me.hWnd)
-Frank Mokry, Palgrave, Ontario, Canada