Curso Entrega 5:

 

En esta entrega vamos a trabajar con dos ejemplos de Exploradores de Imágenes. Espero les sean útiles y les permitan hacerles modificaciones, de mayor complejidad.

El primero tiene una imagen parecida a la siguiente:

Como vemos usamos un Menú hecho con el Editor de menú que ya usaron la semana pasada y una Barra de herramientas para cuyo uso, pueden ver el ejercicio de nuestra página Web, o hacerlo con el Asistente para la creación de Aplicaciones y luego modificar la Barra y sus iconos de acuerdo a los intereses de cada uno.

Sabemos que el control ToolBar se combina con un ImageList para cargar las imágenes que despliegan los botones.

Y además usaremos aquí un control llamado CommonDialog que abre las ventanas estándar de Windows y que nos permite abrir archivos del tipo que le determinemos por código, en este caso son .bmp. Debemos traerlo de Componentes. Tambien incorporamos una Barra de estado: StatusBar, incluida en los Controles Microsoft Window Common Controls, en cuyo grupo se encuentra también la ToolBar y la ImageList. Y por último dibujamos un control Image, con su propiedad Strech a True en el centro del Formulario. El código correspondiente es:

Option Explicit
Dim item As Integer 'declaramos una variable contadora
Dim ultimo As Integer 'lo vamos a usar para mostrar los archivos abiertos
Dim elemento As Integer 'lo vamos a usar para mostrar los archivos abiertos


Private Sub Form_Load()
elemento = 1' elemento comienza en 1
ultimo = 0 ' ultimo en 0
sbStatusBar.Panels(1).Text = "Ninguna" 'la barra de estado en su primer panel va a 'mostrar el camino de las imágenes abiertas. al comenzar no muestra ninguna.
End Sub


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "¿Realmente quiere Salir?", vbQuestion, "Pregunta" 'usamos este código en 'este procedimiento para que antes de cerrar el programa se nos confirme el cierre. 'en este caso tiene un solo boton de Aceptar, pero podríamos elegir dos opciones 'Aceptar/cancelar o Sí/No y con una variable guardar el valor de la elección y en base 'a la misma cerrar el programa o cancelar.
End Sub


Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
If Button = 2 Then PopupMenu mnuFile, , , , mnuFileOpen ' con este código si 'hacemos click con el botón derecho se abre un menú con las opciones de Abrir...
End Sub


Private Sub mnuCerrar_Click()
Image1 = Nothing 'Vaciamos el Control Image
End Sub


Private Sub tbToolBar_ButtonClick(ByVal Button As ComctlLib.Button)
Select Case Button.Key

Case "Cerrar" 'es la propiedad Key de este botón
mnuCerrar_Click
Case "Abrir" 'es la propiedad Abrir
mnuAbrir_Click

Case "Imprimir" ' es la propiedad Imprimir
mnuImprimir_Click
End Select
End Sub


Private Sub mnuAbrir_Click()
Dim archivo As String
On Error GoTo errorhandler ' introducimos un control de error por código

With CommonDialog1

'determina el tipo de archivo a abrir
'common dialog control
.Filter = "Archivos de Imágenes" & " (*.bmp)|*.bmp" ' filtra solo los .bmp
.ShowOpen ' muestra la ventana típica de abrir archivos
If Len(.filename) = 0 Then ' si no seleccionamos ningún archivo sale del 'procedimiento.
Exit Sub
End If
archivo = .filename ' del commondialog
End With


'muestra el camino de la imagen
sbStatusBar.Panels(1).Text = archivo
Image1 = LoadPicture(CommonDialog1.filename)'carga la imagen
item = item + 1'incrementa un item y si es menor a 5 o sea de 0 a 4 la muestra en 'el menu sino descarga el primero guardado.
If item >= 5 Then
Unload mnuItem(elemento)
elemento = elemento + 1
End If
ultimo = ultimo + 1
Load mnuItem(ultimo)
mnuItem(ultimo).Caption = archivo
If item > 0 Then
Load mnuItem(item)
End If
errorhandler:
Exit Sub
mnuItem(0).Visible = True ' muestra el menú de los ultimos 4 archivos abiertos
End Sub


Private Sub mnuImprimir_Click()
'imprime el formulario
frmMain.PrintForm
End Sub


Private Sub mnuFileExit_Click()
'descarga el form
Unload Me
End Sub

El Menu armado en el Editor de Menú Contiene un Abrir y submenus: Cerrar Imagen/ Imprimir/Separador/Archivos recientes/Separador/Salir. De estos submenus el único que tiene Indice es Archivos recientes que se irá incrementando de 0 a 4. Y los Separadores tienen Name pero el caption es un guión para que aparezca una línea divisoria.

El segundo ejercicio es un explorador de imágenes que consta de dos formularios y usa los controles: FileListBox, DriveListBox, y DirListBox que conecta con los dispositivos de almacenamiento y con el árbol de estos con sus carpetas y archivos.

Luego usamos 4 botones. Se abre un segundo formulario vinculado al primero pero no encima sino desplegado hacia abajo donde se muestra la imagen seleccionada en un control Image o a través de un botón siguiente. La aplicación se ve así:

El código es:

Dim archivoseleccionado As String 'cadena de caracteres para cargar el camino del 'archivo .bmp.

Private Sub Command1_Click()' botón Salir
End

End Sub

Private Sub Command2_Click() ' botón mostrar pantalla o sea el otro formulario
Form2.Show
End Sub

Private Sub Command3_Click()
Form2.Hide ' oculta el segundo formulario
End Sub

Private Sub Command4_Click()
'si hay más diapositivas en la lista mostrar la siguiente
If File1.ListIndex < 36 Then
File1.ListIndex = File1.ListIndex + 1
archivoseleccionado = File1.Path & "\" & File1.List(File1.ListIndex)
Form2.Caption = archivoseleccionado ' muestra el camino en el titulo del formulario
Form2.Image1.Picture = LoadPicture(archivoseleccionado)'carga la imagen
Else
Beep
MsgBox "Esa es la última diapositiva" ' si es la ultima avisa
End If
End Sub

Private Sub Dir1_Change()

File1.Path = Dir1.Path 'conecta el camino del archivo con el camino del directorio 'en que se encuentra

End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Path 'conecta el directorio con el driver

End Sub

Private Sub File1_Click()
archivoseleccionado = File1.Path & "\" & File1.List(File1.ListIndex)
Form2.Image1.Picture = LoadPicture(archivoseleccionado)

'si seleccionamos el archivo se despliega

End Sub

Estos controles nos permiten mostrar los arboles de los distintos dispositivos, carpetas y directorios. Y filtramos los archivos a traves de la propiedad Pattern del File1, con la siguiente sintaxis: *.bmp;*.wmf;*.ico.

 

Entrega 1 - Entrega 2 - Entrega 3 - Entrega 4 - Entrega 5 - Entrega 6 - Entrega 7 - Entrega 8