Sección de tutoriales y manuales vb

Control CommonDialog - Cuadro de diálogo Abrir Archivo y Cuadro de diálogo Guardar Archivo como

Volver al índice



 

 

En esta guía se describe el uso básico con algunos ejemplos, de como utilizar los cuadros de diálogos comunes de windows que permiten Abrir un Archivo y el cuadro de diálogo guardar como

Contenido :

 

 

Nota: En la siguiente página hay mas ejemplos relacionados

Ejemplos sobre cuadro de diálogos en visual basic


1 - Introducción

Para poder utilizar dichos cuadros de diálogo hay que incluir al proyecto el ocx Microsoft Common Dialog Controls. Esto se hace desde el menú Proyecto en la opción componentes.

 

vista de la ventana para añadir el control ocx al proyecto

 

Una ves incluído dicho ocx en nuestro proyecto, con el mismo podemos utilizar todos los cuadros de diálogo mencionados anteriormente. Para insertarlo e incorporarlo solo hay que hacerlo como cualquier otro control, es decir hacer un doble click sobre el mismo o seleccionarlo y dibujarlo en el formulario en que lo vamos a utilizar.

 


2 - Método ShowOpen

 

Para poder utilizar el cuadro que permite abrir y poder seleccionar archivos, se utiliza el método ShowOpen.

Al ejecutar este método, automáticamente se abre el cuadro de diálogo que nos permite seleccionar un fichero del disco.

Antes de ver un ejemplo se describen algunas propiedades importantes.

 

 

3 - Propiedades principales del cuadro de diálogo Abrir Archivo

 

 

 


4 - Ejemplo usando el CommonDialog Abrir Archivo:

Como se mencionó, para llamar a este cuadro se utiliza el método ShowOpen. Por ejemplo:

 

CommonDialog1.ShowOpen

 

Al hacer esto se abre el mismo y podemos seleccionar un fichero. Cuando seleccionamos uno, el control Commondialog, en su propiedad FileName, nos devuelve la ruta del archivo elegido, en cambio si no se selecciona ninguno, la propiedad FileName devuelve una cadena vacía.

Por ejemplo, este fragmento de código lo que hace es, al presionar un botón abre el CommonDialog con ShowOpen, y luego de que nosotros seleccionamos un archivo, mostramos el path o ruta del mismo en un control Label1.

 

 Private Sub Command1_Click()
'Abrimos el Commondialog con ShowOpen
CommonDialog1.ShowOpen

'Si seleccionamos un archivo mostramos la ruta
If CommonDialog1.FileName <> "" Then

   Label1 = CommonDialog1.FileName

Else
   'Si no mostramos un texto de advertencia de que no se seleccionó _
   ninguno, ya que FileName devuelve una cadena vacía
   Label1 = "No se seleccionó ningún archivo"

End If

End Sub

 

5 - Propiedad DialogTitle

Para poder establecerle un título al cuadro de diálogo, como por ejemplo, "Seleccione un fichero" o el texto que se quiera, se utiliza la propiedad DialogTitle, ejemplo:

 

'Le establecemos la propiedad DialogTitle
CommonDialog.DialogTitle = "Seleccione un archivo"

'Abrimos el Commondialog con ShowOpen
CommonDialog1.ShowOpen 

 

6 - Propiedad Filter

Para poder permitir visualizar determinadas extensiones se utiliza la propiedad Filter. A esta propiedad que es de tipo String, se le indican las extensiones, con una descripción, separadas por el caracter "|", creo que se llamaba Pipe si no me acuerdo mal.

El siguiente ejemplo abre un cuadro de diálogo que visualiza solo archivos de texto con extensión .txt

 

CommonDialog.Filter = "Archivos de texto|*.txt"
CommonDialog.ShowOpen

 

Este otro ejemplo visualiza, o mejor dicho filtra archivos con extensión exe, ocx y dll

'Le indicamos a la propieadad filter que muestre solo archivos exe, ocx y dll
CommonDialog.Filter = "Archivos ejecutables|*.exe|Archivos Ocx|*.ocx|Archivos Dll|*.dll"

CommonDialog.ShowOpen

 

Este otro ejemplo filtra archivos con extensión jpg, gif, ico, bmp y por último damos la opción de visualizar cualquier extensión indicándole *.*, es decir todos los archivos.

Private Sub Form_Load()

'Le indicamos a la propieadad Filter que muestre o filre solo archivos Jpg, Bmp,
'Gif, Ico y también la posibilidad de mostrar todas las extensiones (*.*)

CommonDialog.Filter = "Archivos Jpg|*.jpg|Archivos Bmp|*.bmp|Archivos Gif|*.gif|Archivos de íconos|*.ico|Todos los Archivos|*.*" CommonDialog.ShowOpen

End sub

 

Nota: si no le especificamos nada a la propiedad Filter, por defecto muestra todos los archivos sin hacer un filtrado.

Otra cosa importante: Al especificar la cadena que filtrará los archivos en la propiedad filter, estos no deben poseer un espacio, por ejemplo:

 

CommonDialog.Filter = "Archivos Jpg|*.jpg |Archivos Bmp|*.bmp"
CommonDialog.ShowOpen

Si probás el ejemplo anterior, verás que podrás visualizar los archivos Bmp sin problemas, pero los jpg no los listará, ya que posee un espacio entre la extensión *.jpg y el caracter "|"

 

7 - Propiedad InitDir

Para indicar el directorio inicial que mostrará el cuadro de diálogo al abrirse, se hace con la propiedad InitDir. El siguiente ejemplo abre el commondialog en el directorio "c:\windows". Cabe aclarar que primero debemos establecer la propiedad y luego llamar al método ShowOpen.

CommonDialog.InitDir = "c:\windows"
CommonDialog.ShowOpen

 

8 - Propiedad FileTitle

Como se dijo antes la propiedad FileName devuelve el path completo del archivo que se seleccionó, pero si nosotros queremos obtener solo el nombre, es decir sin la ruta completa, podemos utilizar la propiedad FileTitle.

Un Ejemplo:

 

'Titulo del cuadro de dialogo
CommonDialog.DialogTitle = "Seleccione un archivo"

'Abrimos el CommonDialog
CommonDialog.ShowOpen

'Mostramos el nombre del archivo seleccionado sin el path
MsgBox "El nombre del archivo seleccionado es: " & CommonDialog.FileTitle

 

Importante: Cuando un usuario no selecciona ningún archivo del cuadro de diálogo, la propiedad FileName devuelve una cadena vacía. Muchas veces nosotros debemos comprobar que se ha seleccionado un archivo, depende a lo que hagamos. Por ejemplo si abrimos un cuadro de diálogo para abrir un archivo que luego se utilizará el path del mismo para leer el contenido, puede que la rutina de código que lee el mismo de error ya que el nombre del archivo es un path vacío, es decir Error: no se ha encontrado el archivo

Una forma de comprobarlo es con un simple IF. En el siguiente ejemplo, si al abrir el cuadro de diálogo, se presiona cancelar, se muestra un mensaje "no se ha seleccionado ningún fichero" ya que la propiedad FileName tiene el valor "", (una cadena vacía)

 

'Abrimos el CommonDialog
CommonDialog.ShowOpen

If CommonDialog.FileName = "" Then
   'No se ha seleccionado ningún archivo
   MsgBox "No se ha seleccionado ningún archivo", vbInformation
Else
  'Mostramos la ruta archivo seleccionado
  MsgBox CommonDialog.FileName
End If 

 


9 - Ejemplo 1

Este ejemplo consiste en al presionar un commandButton se abrirá un Commondialog para poder seleccionar un archivo del disco de tipo Gif. Luego ese archivo se visualiza en un control Image.

Colocar un Commondialog1, un Command1 y un Image1

 

'Titulo del CommonDialog
CommonDialog1.DialogTitle = "Seleccione el archivo gif"

'Extensión del CommonDialog
CommonDialog1.Filter = "Archivos gráficos gif|*.gif"

'Abrimos el CommonDialog
CommonDialog1.ShowOpen

If CommonDialog1.FileName = "" Then
   'No se ha seleccionado ningún archivo
   MsgBox "No se ha seleccionado ningún archivo", vbInformation
Else
  'Mostramos la ruta archivo seleccionado
  Image1.Picture = LoadPicture(CommonDialog1.FileName)
End If 

 


10 - Ejemplo 2

Este otro ejemplo lo que hace es, al presionar un Command1 abrir el cuadro de diálogo para seleccionar archivos de texto con extensión txt. Una ves seleccionado un archivo del cuadro de diálogo, se lee el mismo y se carga el contenido del fichero en un control Text1.

Colocar un commonDialog1, un control Command1 y un control Text1 con la propiedad Multiline en True

 

 Private Sub Command1_Click()
Dim Linea As String
'Titulo del CommonDialog
CommonDialog1.DialogTitle = "Seleccione un archivo de texto"

'Extension del CommonDialog. Archivos txt
CommonDialog1.Filter = "Archivos de texto Txt|*.txt"

'Abrimos el CommonDialog
CommonDialog1.ShowOpen

If CommonDialog1.FileName = "" Then
   'salimos de la rutina ya que no se ha seleccionado ningún archivo
   Exit Sub
Else
  'Borramos el contenido de Text1
  Text1 = ""
  
  'Abrimos el archivo para leerlo, pasándole la ruta con la pro _
   piedad FileName del Commondialog
  Open CommonDialog1.FileName For Input As #1
  
  While Not EOF(1)
    'Leemos la línea
    Line Input #1, Linea
    
    'Vamos cargando las líneas leídas en el text1
    Text1 = Text1 & Linea & vbNewLine
  Wend
  
  'Cerramos el archivo abierto anteriormente
  Close
End If
End Sub

 


 

11 - Cuadro de diálogo guardar Archivo

 

Este cuadro de diálogo nos permite poder seleccionar un directorio y especificar el nombre del archivo para guardarlo. A diferencia del cuadro de diálogo anterior, para poder llamarlo, es decir visualizarlo y abrirlo se utiliza el método ShowSave.

 

Las propiedades del mismo son las mismas que utiliza el anterior cuadro de diálogo, las propiedades DialogTitle, Filter, InitDir, FileTitle, etc..

 


12 - Ejemplo 1 - Cuadro de diálogo Guardar como

 

El siguiente ejemplo lo que hace es al presionar un Command1 se llama al cuadro de diálogo GuardarComo. Luego hay que escribir un nombre de archivo y al presionar el botón Guardar se creará un archivo, que es de tipo txt, ya que le indicamos en la propiedad Filter que es de esta extensión, y luego usando la sentencia Open en modo OutPut crea el fichero con el contenido de un control Text1.

Entonces para el ejemplo colocar un CommonDialog1, un control Text1 con la propiedad Multiline en true y un Command1 que abre el Commondialog.

 

 Private Sub Command1_Click()
Dim Linea As String
'Titulo del CommonDialog
CommonDialog1.DialogTitle = "Escriba el nombre del archivo de texto"

'Extension del CommonDialog. Archivo de tipo txt
CommonDialog1.Filter = "Archivos de texto Txt|*.txt"

'Abrimos el CommonDialog
CommonDialog1.ShowSave

If CommonDialog1.FileName = "" Then
   'salimos ya que no se ha seleccionado ningún archivo
   Exit Sub
Else
  If Text1 = "" Then
     MsgBox "Debe escribir algo en el text1 para poder crear el archivo"
     'Salimos de la rutina ya que no hay nada que guardar
     Exit Sub
  End If
    'Creamos un archivo con la sentencia OutPut, pasandole la ruta _
    con la pro piedad FileName del Commondialog
    Open CommonDialog1.FileName For Output As #1
  
    'Escribimos en el archivo el contenido de Text1
    Print #1, Text1
   
   'Cerramos el archivo
   Close
End If
End Sub

 


13 - Ejemplo 2 - Cuadro de diálogo Guardar como

 

Este ejemplo es similar al anterior, con la diferencia de que en ves de guardar el contenido de un control text1 para generar un archivo de texto, se graba una imagen de un control Picture1 en la ruta que le indiquemos y también con el nombre que le coloquemos en el cuadro de diálogo. Para grabar el contenido del Picture1 se utiliza la función SavePicture. Esta función tiene 2 parámetros, el primero es la imagen, en este caso le indicamos el control PictureBox que tiene dicho gráfico cargado, el segundo parámetro es el path donde generar dicho archivo.

El ejemplo guarda la imagen en formato bmp, por eso mismo en la propiedad Filter del CommonDialog le indicamos esta extensión.

Para probar el ejemplo coloca un Picture1 y cargarle un gráfico. Luego coloca un Commondialog1 y un control Command1 que es el que llamará a dicho cuadro de diálogo, donde se deberá escribir el nombre del archivo para guardarlo en otro ubicación.

 

Private Sub Command1_Click()
'Titulo del CommonDialog
CommonDialog1.DialogTitle = "seleccione la ruta y escriba el nombre del archivo imagen"

'Extension del CommonDialog. Archivo de tipo Bmp
CommonDialog1.Filter = "Archivos Bmp|*.bmp"

'Abrimos el CommonDialog Guardar como
CommonDialog1.ShowSave

If CommonDialog1.FileName = "" Then
   'salimos ya que no se ha escrito ningún nombre de archivo
   'o se seleccionó cancelar, por lo tanto FileName es una cadena vacía
   Exit Sub
Else
   'Grabamos el archivo
   SavePicture Picture1.Picture, CommonDialog1.FileName
End If
End Sub 

 

Nota: Cuando abrimos el diálogo para escribir el nombre del archivo, no es necesario escribir la extensión, ya que la misma está especificada en la propiedad Filter. Si lo hacemos, suponiendo que escribimos MiArchivo.bmp, el archivo generado será MiArchivo.Bmp.Bmp.

 


14 - Ejemplo 3

 

Este tercer ejemplo muestra como, utilizar el Cuadro de diálogo Abrir archivo para seleccionar un gráfico y cargarlo en un control Image. Luego mediante otro Botón se Abre el utiliza el cuadro de diálogo Guardar, para poder guardar el mismo gráfico en alguna ubicación especifica y con otro nombre.

Nota. Para guardar el gráfico se utiliza la función SavePicture. Esta función requiere como parámetro, la imagen, en este caso es la que se encuentra cargada en el Image, y el path donde guardarlo, que en este caso es la ruta y nombre del archivo que hayamos elegido en el Commondialog

Colocar un control Image1, un Command1 , un Command2 y un control CommonDialog llamado Commondialog1, como está en la imagen:

 

vista del ejemplo en visual basic para guardar una imagen con el commondialog y la función savepicture

 

El código fuente del formulario

 'Carga la imagen en el control Image
Private Sub Command1_Click()

With CommonDialog1
    
    .DialogTitle = " Seleccionar imagen ára cargar en el image "
    'Filtro para los archivos de imagen
    .Filter = "BMP|*.bmp|JPG|*.JPG|GIF|*.GIF|Todos los archivos|*.*"
    
    'Muestra el cuadro de diálogo Arir archivo
    .ShowOpen
    
    'si no se seleccionó un archivo salimos
    If .FileName = "" Then
       Exit Sub
    Else
       ' Si no , cargamos la imagen seleccionada en el control
       Image1 = LoadPicture(.FileName)
    End If
End With


End Sub

'Guarda la imagen del image en un nuevo archivo
Private Sub Command2_Click()
On Error GoTo errSub

'si el control Image no tiene una imagen sale de la rutina
If Image1.Picture = 0 Then
   MsgBox "No se puede guardar. El image debe tener una imagen", vbCritical
End If
With CommonDialog1

'Filtro para guardar con la extención BMP
.Filter = "BMP|*.bmp"

' Muestra el cuadro de diálogo Guardar como
.ShowSave

'Si el archivo es una cadena vacía salimos
If .FileName = "" Then
   Exit Sub
Else
   'Si no, la guardamos
   SavePicture Image1, .FileName
   MsgBox " archivo guardado correctamente ", vbInformation
End If

End With

Exit Sub

errSub:
MsgBox Err.Description
End Sub

Private Sub Form_Load()

Image1.Stretch = True
Me.Caption = " Ejemplo para guardar una imagen con el" _
               & "Commondialog y SavePicture "

Command1.Caption = " Cargar imagen "
Command2.Caption = " Guardar imagen"

End Sub

 


 

Bueno esto es lo básico sobre los Commondialog. Si te interesa poder utilizar los cuadros de diálogo de windows pero sin utilizar el ocx de Visual basic, podés hacerlo con el Api de windows. Hacerlo con el Api es mejor, ya que estamos dependiendo menos de archivos externos para nuestra aplicación, en este caso el ocx COMDLG32.ocx .

En este enlace podés descargar un módulo que permite utilizar el cuadro de diálogo Abrir y commondialog para guardar: Módulo bas para utilizar los Commondialog de windows usando el Api

 


 

15 - Enlaces relacionados a los cuadros de diálogo

 

 


Buscar en Recursos vb