Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid...

18
Controles para el Controles para el desarrollo de clientes desarrollo de clientes inteligentes con inteligentes con Windows Forms Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft

Transcript of Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid...

Page 1: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Controles para el Controles para el desarrollo de clientes desarrollo de clientes inteligentes con Windows inteligentes con Windows FormsForms

Mentor AsociadoSolid Quality LearningIberoAmericana

Daniel A. SearaNDSoft

Page 2: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

AgendaAgenda

Los que estánLos que están

Mejorando la experiencia del usuarioMejorando la experiencia del usuario

Cuando los que están no alcanzanCuando los que están no alcanzan

Preguntas…Preguntas…

Page 3: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Los que estánLos que están

(ex) Windows Common Controls 2(ex) Windows Common Controls 2TreeViewTreeView

ListViewListView

StatusBarStatusBar

ToolbarToolbar

Windows FormsWindows FormsToolTipToolTip

HelpProviderHelpProvider

MainMenuMainMenu

ContextMenuContextMenu

Page 4: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Mejorando la experiencia del Mejorando la experiencia del usuariousuario

Entornos similares a los ya conocidosEntornos similares a los ya conocidosExplorerExplorer

Internet ExplorerInternet Explorer

Funcionalidades similares Funcionalidades similares ¡Aprender mucho a usar Office!¡Aprender mucho a usar Office!

Page 5: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Mejorando la experiencia del Mejorando la experiencia del usuariousuario

Menús adaptativosMenús adaptativos

'Agrega al menú contextual, las opciones del Menú Ver

cmnuLista.MergeMenu(mnuVer)

'Inserta un Separador

cmnuLista.MenuItems.Add("-")

'Agrega las opciones del menú Editar

cmnuLista.MergeMenu(mnuEditar)

Page 6: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Mejorando la experiencia del Mejorando la experiencia del usuariousuario

Informar al usuario, mientras se Informar al usuario, mientras se realizan tareasrealizan tareas

Sub Informar(Optional ByVal texto As String = "")

Estado.Panels(0).Text = texto

DoEvents()

End Sub

Page 7: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Mejorando la experiencia del Mejorando la experiencia del usuariousuario

Informar al usuario, mientras se Informar al usuario, mientras se realizan tareas (Progreso)realizan tareas (Progreso)

Sub PrepararProgreso(ByVal mínimo As Integer, ByVal máximo As Integer) With Progreso .Value = mínimo .Minimum = mínimo .Maximum = máximo Dim izq, ancho As Integer For Each p As StatusBarPanel In Estado.Panels If p Is PanelProgreso Then ancho = .Width Exit For End If izq += p.Width Next .Left = izq .Top = Estado.Top + 1 .Width = ancho .Visible = True End With End Sub

Sub Progresar() With Progreso If .Value = .Maximum Then .Visible = False Else .Value += 1 End If End With DoEvents() End Sub

Page 8: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Mejorando la experiencia del Mejorando la experiencia del usuariousuario

Gráfica entendibleGráfica entendible

Function AgregaFoto(ByVal FotoBytes() As Byte) As Integer Dim mst As New System.IO.MemoryStream(FotoBytes, _ 78, FotoBytes.Length - 78) 'Crea un Bitmap Dim Img As New System.Drawing.Bitmap(mst) 'Agrega el bitmap a la colección de imágenes imgFotos.Images.Add(System.Drawing.Bitmap.FromStream(mst)) imgFotos16.Images.Add(System.Drawing.Bitmap.FromStream(mst)) Img.Dispose() Return imgFotos.Images.Count - 1 End Function

Page 9: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Mejorando la experiencia del Mejorando la experiencia del usuariousuario

Arrastrar y colocar (alias Arrastrar y colocar (alias Drag and Drag and DropDrop))

Del OrigenDel OrigenItemDragItemDrag

Del DestinoDel DestinoDragEnterDragEnter

DragOverDragOver

DragDropDragDrop

Asignar los elementos que se desee administrar a

DataObject, y llamar al método DoDragDrop

Ver si hay datos presentes y mostrar el efecto

deseado(Copiar, mover, No)

Indicar efectivamente el destino (ej. Nodo del árbol)

Realizar la tarea adecuada, con los datos arrastrados

Page 10: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Mejorando la experiencia del Mejorando la experiencia del usuariousuario

El usuario espera comportamientosEl usuario espera comportamientosPreservar información de la aplicación Preservar información de la aplicación para la próxima llamadapara la próxima llamada

Posición y tamaño de la ventanaPosición y tamaño de la ventana

Opciones de visualizaciónOpciones de visualización

Etc.Etc.

El usuario se asusta con las ventanas El usuario se asusta con las ventanas rarasraras

Dejar algo en la retaguardia, como último Dejar algo en la retaguardia, como último control de errorescontrol de errores

Page 11: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Cuando los que están no Cuando los que están no alcanzanalcanzan

ListViewListViewControl “esperado” por el usuarioControl “esperado” por el usuario

Lo ve cada día, en Internet Explorer, OutlookLo ve cada día, en Internet Explorer, Outlook

ProblemasProblemasNo es vinculable a datosNo es vinculable a datos

Ordena por caracteresOrdena por caracteres

No “reacciona” a los cambios en los datosNo “reacciona” a los cambios en los datos

Page 12: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

DataListViewDataListView

… … y vamos a tener que hablar de y vamos a tener que hablar de herenciaherencia

Funcionalidad previstaFuncionalidad previstaLa que tiene ListView (esto es herencia)La que tiene ListView (esto es herencia)

Vinculable a datosVinculable a datos

OrdenableOrdenable

Sensible a los cambios de los datos Sensible a los cambios de los datos subyacentessubyacentes

Page 13: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Creando DataListViewCreando DataListView

Un proyecto de ControlesUn proyecto de ControlesUna clase Una clase

(o sea, sacamos el UserControl)(o sea, sacamos el UserControl)

Que hereda de Que hereda de System.Windows.Forms.ListViewSystem.Windows.Forms.ListView

Para aprovechar la funcionalidad existentePara aprovechar la funcionalidad existente

Agregamos atributos para definir su Agregamos atributos para definir su comportamientocomportamiento

<System.ComponentModel.ToolboxItem(True), _

System.ComponentModel.DefaultEvent("DoubleClick"), _

ToolboxBitmap(GetType(DataListView))> _

Page 14: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Creando DataListViewCreando DataListView

Agregamos nuestras propiedadesAgregamos nuestras propiedadesDataSourceDataSource

DataMemberDataMember

Procedimientos para CargarProcedimientos para CargarVincularVincular

Define las columnas y carga los itemsDefine las columnas y carga los items

Cada item debiera contener la fila que lo Cada item debiera contener la fila que lo generagenera

Cambiar ListItemCambiar ListItem(Heredando de ListItem)(Heredando de ListItem)

Page 15: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Definiendo DataListItemDefiniendo DataListItem

Otra claseOtra claseQue hereda de Que hereda de System.Windows.Forms.ListViewItemSystem.Windows.Forms.ListViewItem

Expone Expone DataRowDataRow

Key (que le falta al ListViewItem)Key (que le falta al ListViewItem)

Pero necesitamos que se exponga este Pero necesitamos que se exponga este tipo en lugar del propio del ListView en la tipo en lugar del propio del ListView en la propiedad Itemspropiedad Items

Page 16: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Definiendo Definiendo DataListItemCollectionDataListItemCollection

Otra clase másOtra clase másQue hereda de Que hereda de System.Windows.Forms.ListView.ListViewItemCollectionSystem.Windows.Forms.ListView.ListViewItemCollection

Contiene los DataListItemContiene los DataListItemPara accederlos por clave, utiliza un HashTablePara accederlos por clave, utiliza un HashTable

Se deben reemplazar los miembros comunes, Se deben reemplazar los miembros comunes, para que su comportamiento se adapte a para que su comportamiento se adapte a nuestros requerimientosnuestros requerimientos

AddAdd

ClearClear

ItemItem

RemoveRemove

Page 17: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

Ordenando…Ordenando…

Se debe asignar la propiedad Se debe asignar la propiedad ListViewItemSorterListViewItemSorter

Con una clase que implemente la Con una clase que implemente la Interfaz Interfaz System.Collections.IcomparerSystem.Collections.Icomparer

Devolviendo el resultado de la comparación Devolviendo el resultado de la comparación del valor de los campos, en lugar de la del valor de los campos, en lugar de la comparación de cadenas de caracterescomparación de cadenas de caracteres

-1 Menor-1 Menor

0 Iguales0 Iguales

1 Mayor1 Mayor

Page 18: Controles para el desarrollo de clientes inteligentes con Windows Forms Mentor Asociado Solid Quality Learning IberoAmericana Daniel A. Seara NDSoft.

PreguntasPreguntas