Aplicación Para PocketPC Fecha:
28/Ene/2005 (25 de Enero del 2005)
|
|
Esta es una pequeña App que lleva el control de “Libros Prestados” para uso personal. La App consta de un Menú y un Form en el cual se llevan los movimientos. Esta App tiene como finalidad mostrar el uso principalmente del DataGrid con sus limitaciones de Compact Framework y del almacenamiento de datos con archivos XML. “Todas las marcas y logos son propiedad de sus respectivos dueños..” El Form de menú principal esta compuesto de dos opciones, una para llamar al Form de “Libros Prestados” y otro para Salir de la App.El Form de menú principal esta compuesto de dos opciones, una para llamar al Form de “Libros Prestados” y otro para Salir de la App.
El código utilizado para elaborar el menú es igual que el de un Windows Form:
'Opciones del menú
Private Sub MenuItem4_Click( ByVal sender _
As System.Object, ByVal e As System.EventArgs) _
Handles MenuItem4.Click
Dim frm As New Form1
frm.Show ()
End Sub
Private Sub MenuItem5_Click( ByVal sender _
As System.Object, ByVal e As System.EventArgs) _
Handles MenuItem5.Click
Me.Close ()
End Sub
El Form de “Libros Prestados”:
Como el DataGrid del CF no tiene la misma funcionalidad les voy a explicar las que he encontrado:
- No es Modificable en modo de ejecución [no se puede editar una celda directamente]
- Como no tiene DataMember es necesario asignarle el origen de datos al DataSource
- Para poder editar una celda del DataGrid se utilizó el TextBox donde por medio de una rutina, cuando se ubique el cursor en una celda, el contenido aparecerá en el TextBox para ser editado y posteriormente para mostrar los cambios en el Datagrid pulsaremos el Botón “Editar Celda Seleccionada” que mediante otra rutina los cambios se reflejen en el DataGrid.
A continuación le muestro el código documentado:
Dim dsLibros As New DataSet
Dim dt As New DataTable
Dim xmlFile As String = "libros.xml"
Dim xsdFile As String = "libros.xsd"
'Esta rutina es para saber la dirección de la aplicación en el
'dispositivo móvil, en tu dispositivo móvil el directorio donde
'se instalará la aplicación será "\Program Files\TuApp"
Dim path As String = System.IO.Path.GetDirectoryName ( _
System.Reflection.Assembly.GetExecutingAssembly ().GetName().CodeBase)
Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Verificamos que los archivos de datos se encuentren en
' " \Program Files\TuApp"
If File.Exists (path & "\" & xmlFile) Then
' Creamos los FileStream del archivo XML y XSD
Dim FsXML As New FileStream (path & "\" & xmlFile, FileMode.Open)
Dim FsXSD As New FileStream (path & "\" & xsdFile, FileMode.Open)
' Carga el esquema en el DataSet.
Dim xtrXSD As New XmlTextReader (FsXSD)
dsLibros.ReadXmlSchema (xtrXSD)
xtrXSD.Close ()
FsXSD.Close ()
' Carga la data en el DataSet.
Dim xtrXML As New XmlTextReader (FsXML)
dsLibros.ReadXml (xtrXML)
xtrXML.Close ()
FsXML.Close ()
' Como los DataGrid del Compact Framework no tienen
' [ DataMember ] se le asigna el origen de datos
' directamente en el DataSource
dt = dsLibros.Tables(0)
dgLibros.DataSource = dt
Else
MsgBox ("no encontró el archivo", MsgBoxStyle.Critical)
End If
End Sub
' Cuando ubicamos el cursor sobre una celda especifica
' el contenido de esta aparece en el TextBox para ser modificado.
Private Sub dgLibros_CurrentCellChanged( ByVal sender As Object, ByVal e As System.EventArgs) Handles dgLibros.CurrentCellChanged
Dim currentCell As DataGridCell
Dim currentCellData As String
' Se obtiene la celda actual.
currentCell = dgLibros.CurrentCell
' Se obtiene la data de la celda actual.
currentCellData = CStr (dgLibros(currentCell.RowNumber, currentCell.ColumnNumber))
' Al TextBox se le asigna el valor de la celda actual.
TextBox1.Text = currentCellData
End Sub
' Como no es posible editar directamente un DataGrid fue necesario
' utilizar un TextBox y el botón para editar el contenido de la celda.
Private Sub btnEditaCelda_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEditaCelda.Click
Dim currentCell As DataGridCell
Dim currentCellData As String
' Se obtiene el texto a poner en la celda actual.
currentCellData = TextBox1.Text
' Se obtiene la celda actual.
currentCell = dgLibros.CurrentCell
' Se asigna la data a la celda actual.
dgLibros ( currentCell.RowNumber , currentCell.ColumnNumber) = currentCellData
End Sub
' Elimina la fila actual.
Private Sub btnEliminar_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
' Verifica que hayan filas que para eliminar
If dsLibros.Tables (0).Rows.Count > 0 Then
dsLibros.Tables (0).Rows.RemoveAt(dgLibros.CurrentCell.RowNumber)
MsgBox ( "Data Eliminada", MsgBoxStyle.Information)
Else
MsgBox ("No hay filas que eliminar", MsgBoxStyle.Information)
End If
End Sub
' Agrega una fila nueva al DataGrid.
Private Sub btnAgregar_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregar.Click
Dim maxRowNumber As Integer
Dim dataRow As DataRow
Dim index As Integer
Dim columnName As String
' Incrementa el número de filas.
maxRowNumber += 1
' Crea una nueva fila para la DataTable.
dataRow = dsLibros.Tables(0).NewRow
' Agrega data en cada columna en la nueva fila,
' para visibilidad
For index = 0 To dsLibros.Tables (0).Columns.Count - 1
columnName = dsLibros.Tables(0).Columns(index).ColumnName
dataRow (columnName) = "R " + maxRowNumber.ToString() + ", " + columnName
Next index
dsLibros.Tables (0).Rows.Add(dataRow)
End Sub
' Guarda los cambios hechos al DataGrid
Private Sub btnSalvar_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalvar.Click
Try
dsLibros.AcceptChanges ()
dsLibros.WriteXml (path & "\" & xmlFile)
MsgBox ("Data Guardada", MsgBoxStyle.Information)
Catch ex As Exception
MsgBox ("Error: " & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
' Salir del Form
Private Sub btnSalir_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click
Me .Close ()
End Sub
Bueno… espero que al igual que a mi se te hayan despejado algunas dudas con respecto al Compact FrameWork, y al uso sobretodo del DataGrid, te invito a que te bajes la Mobile Application Development ToolKit 2004 http://msdn.microsoft.com/mobility/ aquí encontrarás información referente al desarrollo de aplicaciones Móviles… Este Kit me ayudo mucho en la elaboración de esta App de ejemplo. Saludos y hasta la próxima.
Espacios de nombres usados en el código de este artículo:
System.Xml
System.IO
System.Windows.Form
Fichero con el código de ejemplo: dfunez_Aplicacion_Para_PocketPC.zip - 21.4 KB