Por: Roberto Alvarado
Capitulo 10
Para comenzar un pequeño truco, hemos estado utilizando imágenes para simular botones gráficos y para los botones de la barra de herramientas, estos gráficos son archivos en formato bmp de 256 colores, la razón de este formato es que el control PictureBox e Image solo pueden mostrar imágenes de estas características, si deseamos mostrar imágenes de mayor resolución o incluso en formato jpg o gif, debemos utilizar otros controles, uno muy bueno es el control S309PictureBox, además de mostrar las imágenes en esas resoluciones, es gratis, este control lo podemos conseguir en esta dirección: http://nsbasic.com/S309/ . En una entrega posterior lo utilizaremos y trataremos de explorar todas las posibilidades de este control.
El truco para que al compilar la aplicación nos copie las imágenes al directorio en donde esta la aplicación es este:
No vamos al menú Project, aquí escogemos la opción Add File..., y en este cuadro de dialogo buscamos nuestro archivo de imagen en formato bmp, y antes de hacer clic en el botón Aceptar, hacemos clic en Add As Related Document, que se encuentra en la parte inferior izquierda del cuadro de dialogo, con esto aparece en la ventana de Project, una nueva carpeta llamada Related Documents y allí van a estar todos nuestros archivos bmp.
Aquí apreciamos la pantalla Add File del menu Project
A continuación tenemos la pantalla del Explorador del Proyectos en la cual aparecen todos los archivos de imágenes relacionados en la carpeta “Related Documents”.
Bueno vamos a darle un poco de “Vida” a nuestra aplicación al momento de entrar a ella, vamos a hacerlo clocando un grafico en la pantalla, el cual se ocultara al momento de escoger alguna de las opciones del menú. Para esto vamos a colocar un nuevo control PictureBox, este control se va a llamar PictureBox5, las dimensiones del control son la altura o Height = 3135 y el ancho o Width = 2805. Lo pueden colocar en cualquier parte de la forma cuidando que no quede dentro de alguno de los frames que ya hemos utilizado.
Además vamos a darle un poco de vida agregando color al fondo de la forma, esto lo hacemos en la propiedad Backcolor de la forma, cuando hacemos clic sobre la flechita nos muestra una cuadro de dialogo para que escojamos el color del fondo, aparecen dos pestañas, pinchamos en la pestaña que dice “Palette” y escogemos de los amarillos el primer color de arriba hacia abajo. De esta forma le damos color de fondo a nuestra Aplicación, de esta manera podemos cambiar el color de fondo de los controles que lo permitan.
Ahora en el evento Load de la forma vamos a agregar lo siguiente :
'Muestro la Imagen de entrada
PictureBox5.Top = 420
PictureBox5.Left = 390
PictureBox5.Picture = App.Path & "Logo.bmp"
PictureBox5.Visible = True
Con esto colocamos en posición el PictureBox y le asignamos el archivo de imagen para que lo muestre en la pantalla.
A continuación podemos observar como se apreciara la pantalla principal de nuestra aplicación.
Ahora como esta imagen la hemos colocado después de haber creado los frames, si mostramos un frame va a aparecer detrás de la imagen, entonces eso no lo queremos... queremos y necesitamos que los frames ya creados aparezcan delante de la imagen, para esto se utiliza la propiedad Zorder, con esta propiedad le decimos que queremos que el objeto este en el orden cero (0) o sea delante de todo lo que haya en la pantalla.
Entonces para que se orienten mejor les pongo el código del MenuBar en el evento MenuClick Completo y las líneas que he adicionado las voy a colocar en color rojo
Private Sub MenuBar1_MenuClick(ByVal Item As MenuBarLib.Item)
Dim i As Long
Select Case Item.Key
Case "mnuTabTareas"
'TAREAS
fraTareas.Top = 0
fraTareas.Left = 30
fraTareas.Visible = True
fraTareas.ZOrder 0
ActivarMenu mnuAccion
'Abro el recordset
rs.Open "Tareas", cnn, adOpenDynamic, adLockOptimistic
Case "mnuTabClientes"
'CLIENTES
fraClientes.Top = 0
fraClientes.Left = 30
fraClientes.Visible = True
fraClientes.ZOrder 0
ActivarMenu mnuAccion
'Abro el recordset
rs.Open "Clientes", cnn, adOpenDynamic, adLockOptimistic
Case "mnuTabApp"
'APLICACIONES
fraAplicaciones.Top = 0
fraAplicaciones.Left = 30
fraAplicaciones.Visible = True
fraAplicaciones.ZOrder 0
ActivarMenu mnuAccion
'Abro el recordset con la tabla Aplicaciones
rs.Open "Aplicaciones", cnn, adOpenDynamic, adLockOptimistic
Case "mnuNuevo"
'NUEVO
ActivarGuardar mnuAccion, mnuTablas
xNuevo = 1
If fraClientes.Visible Then
'Limpio los textbox
Text1.Enabled = True
For i = 0 To Me.Controls.Count - 1
If Mid(Me.Controls(i).Name, 1, 4) = "Text" Then
Me.Controls(i).Text = ""
End If
Next i
End If
If fraAplicaciones.Visible Then
Text8.Enabled = True
Text8.Text = ""
Text9.Text = ""
End If
DesactivoNavega
Case "mnuEditar"
'EDITAR
xNuevo = 2
If fraClientes.Visible Then
'El ID no puede Modificarse
Text1.Enabled = False
End If
DesactivoNavega
Case "mnuborrar"
'BORRAR
Dim Resp As Long
Resp = MsgBox("Esta seguro de ELiminar este registro?", vbApplicationModal + vbCritical + vbYesNo, "Eliminando Registros...")
If Resp = vbYes Then
rs.Delete
rs.MoveFirst
MuestraRegistro
End If
Case "mnuCancelar"
'CANCELAR
desActivoGuardar mnuAccion, mnuTablas
ActivoNavega
Case "mnuGuardar"
'GUARDAR, GRABAR O SALVAR
If xNuevo = 1 Then
rs.AddNew
End If
If fraClientes.Visible Then
rs.Fields("IdCliente") = Text1.Text
rs.Fields("Nombre") = Text2.Text
rs.Fields("Direccion") = Text3.Text
rs.Fields("Telefonos") = Text4.Text
rs.Fields("Celular") = Text5.Text
rs.Fields("Fax") = Text6.Text
rs.Fields("ValorHora") = Text7.Text
End If
If fraAplicaciones.Visible Then
rs.Fields("IdApp") = Text8.Text
rs.Fields("Aplicacion") = Text9.Text
End If
rs.Update
desActivoGuardar mnuAccion, mnuTablas
ActivoNavega
Case "mnuCerrar"
'CERRAR LA OPCION ACTUAL
rs.Close
If fraTareas.Visible Then
fraTareas.Visible = False
End If
If fraClientes.Visible Then
fraClientes.Visible = False
End If
If fraAplicaciones.Visible Then
fraAplicaciones.Visible = False
End If
End Select
End Sub
Además he hecho algunas correcciones para que no salgan mensajes de error cuando hacemos clic en los botones de navegación, y la tabla esta vacía. El código es el siguiente:
Private Sub MenuBar1_ButtonClick(ByVal Button As MenuBarLib.MenuBarButton)
Select Case Button.Key
Case "btnInicio"
If Not rs.EOF And Not rs.BOF Then
rs.MoveFirst
End If
Case "btnPrevio"
If Not rs.EOF And Not rs.BOF Then
rs.MovePrevious
If rs.BOF Then
rs.MoveFirst
MsgBox "Es el PRIMER Registro", vbApplicationModal + vbOKOnly, "Consultando..."
End If
End If
Case "btnSigte"
If Not rs.EOF And Not rs.BOF Then
rs.MoveNext
If rs.EOF Then
rs.MoveLast
MsgBox "Es el ULTIMO Registro", vbApplicationModal + vbOKOnly, "Consultando..."
End If
End If
Case "btnFin"
If Not rs.EOF And Not rs.BOF Then
rs.MoveLast
End If
End Select
MuestraRegistro
End Sub
Lo que esta en rojo indica lo nuevo, he colocado esta pregunta ya que cuando una tabla la abrimos y esta vacía tanto el fin de archivo (EOF), como el principio de archivo (BOF) son verdaderos. De esta manera no sale un error si presionan cualquiera de los botones y no hay datos en la tabla aun.
Al igual la rutina en donde mostramos el registro quedara con la pregunta y se vera de la siguiente manera:
Sub MuestraRegistro()
If Not rs.EOF And Not rs.BOF Then
If fraClientes.Visible Then
Text1.Text = rs.Fields("IdCliente")
Text2.Text = rs.Fields("Nombre")
Text3.Text = rs.Fields("Direccion")
Text4.Text = rs.Fields("Telefonos")
Text5.Text = rs.Fields("Celular")
Text6.Text = rs.Fields("Fax")
Text7.Text = rs.Fields("ValorHora")
End If
If fraAplicaciones.Visible Then
Text8.Text = rs.Fields("IdApp")
Text9.Text = rs.Fields("Aplicacion")
End If
End If
End Sub
Las líneas en rojo son la pregunta que incluyo para que no salga error cuando la tabla este vacía.
En la Opción de Aplicaciones vamos a hacer lo siguiente: cuando nos coloquemos en el campo Id Aplicación, que aparezca el teclado y cuando dejemos el campo Aplicación que desaparezca. Para esto vamos a utilizar el evento GotFocus del control Text8 y el evento LostFocus del control Text9. También para que halla uniformidad, convertimos las letras a mayúsculas. Veamos como queda el código:
Private Sub Text8_GotFocus()
Me.SIPVisible = True ‘Esta instrucción Muestra el teclado del PPC
End Sub
Private Sub Text8_LostFocus()
Text8.Text = UCase(Text8.Text) 'Convierte a Mayusculas
End Sub
Private Sub Text9_LostFocus()
Text9.Text = UCase(Text9.Text)
Me.SIPVisible = False ‘Esta instrucción Oculta el teclado del PPC
End Sub
Muy bien prueben eso... funciona muy bien cierto? Que les parece, un poco de facilidad y automaticidad para el usuario. O.K. para que desaparezca el teclado cuando estemos en Text9, o sea cuando pedimos el nombre de la aplicación, lo que debemos hacer es presionar la tecla Tab en el teclado para que el TextBox pierda el Foco y se oculte el teclado.
Bueno y ahora para terminar vamos a darle a nuestra pantalla o nuestro frame de Aplicaciones la apariencia de una verdadera ventana de Pocket PC, así como aparecen las ventanas Child en un formulario MDI cuando hacemos programas en VB para el PC. Como podemos simular la barra de títulos y la X para cerrar la ventana? Bueno van a ver que es MUY SENCILLO.
Esto Lo vamos a hacer con dos controles Label para esto vamos a crear dos controles label y los vamos a colocar en la parte superior del Frame cubriendo el titulo que teníamos.
El label que vamos a crear para simular la barra de títulos lo vamos a llamar lblTitApp y sus propiedades son las siguientes :
LblTitApp.BackColor = &H00FF0000& Este es el color Azul de la barra de títulos, ustedes pueden colocar el que deseen
LblTitApp.Caption = “Aplicaciones”
LblTitApp.Font = Tahoma, Size = 9, Bold = True, Esto es dejamos la misma fuente, pero le colocamos tamaño 9 y en negrita.
LblTitApp.ForeColor = &H00FFFFFF& Este es el color Blanco, o sea, las letras van a ser de color blanco sobre fondo azul.
LblTitApp.Width = 3255
LblTitApp.Height = 255
Junto a este label vamos a crea otro label con las mismas características que el anterior, a este label lo vamos a llamar lblAppExit, las propiedades que vamos a cambiar son las siguientes:
LblAppExit.Alingment = 1 vbRightJustify
LblAppExit.Caption = “X”
LblAppExit.Width = 195
De esta manera simulamos la barra de títulos de una ventana y su botón de cerrar.
Ahora vamos a ponerle el código al botón cerrar (X) de la ventana, o sea al label lblAppExit:
Private Sub lblAppExit_Click()
rs.Close
fraAplicaciones.Visible = False
Me.SIPVisible = False
End Sub
Nuestra pantalla de diseño se vera de esta manera:
Y nuestra aplicación se vera de esta manera en el PPC cuando escojamos la opción de Aplicaciones:<
No hay comentarios.:
Publicar un comentario