Introducción
Resumen de los detalles de implementación de los formularios de la aplicación Windows.
Checklist con las características deseadas a implementar en cada formulario.
Funcionamiento
Integramos la navegación, la búsqueda y la ficha de los registros en un único formulario.
No utilizamos el control BindingNavigator para navegar registro a registro.
Esquema del formulario:
- Paginador
- Grid
- Botones de Modo (toolStrip)
- label:Modo trabajo
- Insertar
- Editar
- Eliminar
- Buscar
- Separator
- label:Desactivar búsqueda
- Formulario detalles
- Aceptar (form.AcceptButton)
- Cancelar (form.CancelButton)
- Editores correspondientes
- No visible
- BindingSource
- ErrorProvider
- toolStrip
- toolTip
- contextMenu
Modos de Funcionamiento
Implementamos un tipo enumerado para identificador el modo del formulario, ubicado en la clase utils.cs:
public enum eEstadoForm
{
Navegar,
Insertar,
Editar,
Buscar
}| Control | Activo |
| Insertar | SI |
| Editar | SI |
| Eliminar | SI |
| Buscar | SI |
| Grid | SI |
| Aceptar | NO |
| Cancelar | NO |
En la ficha se va mostrando el registro seleccionado en el Grid.
No permitir las ediciones directas en el grid. Con doble-click sobre un registro, pasamos al modo de Edición.
Tenemos un menú contextual sobre el grid con las opciones de Edición y Eliminación.
| Control | Activo |
| Insertar | NO |
| Editar | NO |
| Eliminar | NO |
| Buscar | NO |
| Grid | NO |
| Aceptar | SI |
| Cancelar | SI |
Se validan los campos obligatorios y se utiliza el control ErrorProvider para indicar si alguna validación no ha tenido éxito.
Al insertar un registro, se muestra un tooltip si la inserción ha tenido éxito, o un alert si ha fallado, se limpian los campos y se queda activo el modo de inserción para permitir insertar un nuevo registro.
El botón Cancelar vuelve al modo de navegación.
| Control | Activo |
| Insertar | NO |
| Editar | NO |
| Eliminar | NO |
| Buscar | NO |
| Grid | NO |
| Aceptar | SI |
| Cancelar | SI |
Se validan los campos obligatorios y se utiliza el control ErrorProvider para indicar si alguna validación no ha tenido éxito.
Al editar un registro, se muestra un tooltip si la modificación ha tenido éxito, o un alert si ha fallado, y volvemos al modo de navegación.
El botón Cancelar vuelve al modo de navegación.
| Control | Activo |
| Insertar | NO |
| Editar | SI |
| Eliminar | SI |
| Buscar | NO |
| Grid | SI |
| Aceptar | NO |
| Cancelar | SI |
Guardamos los campos de búsqueda en caché para recuperarla después de una edición de un registro filtrado.
Se muestra un enlace en la barra de herramientas para indicar que el listado está filtrado, que al pulsarlo cancela la búsqueda.
El botón Cancelar limpia la búsqueda y vuelve al modo de Navegación.
Opciones de búsqueda:
- Utilizar el botón de Aceptar para lanzar la búsqueda de los textos introducidos.
- Ir realizando búsquedas con cada pulsación de tecla.
Checklist
Lista para comprobar que tenemos implementados todos los detalles de funcionamiento y usabilidad de los formularios:
- Botones por defecto del formulario: form.AcceptButton = Aceptar y form.CancelButton = Guardar
- No permitir que se modifique el tamaño de los formularios: MaximizeBox = false, MinimizeBox = false y FormBorderStyle = FixedSingle
- Comprobar el orden de tabulación de los controles.
- Añadir la imagen del asterisco para los campos obligatorios, con un tooltip que indique "Campo obligatorio"
- Utilizar ErrorProvider para marcar los campos que no cumplen la validación.
- Utilizar un ToolTip para indicar que la operación que ha realizado el usuario (edición / inserción), ha tenido éxito.
- Añadir atajos de teclado a los botones de la barra de herramientas:
- &Insertar -> Alt+I
- &Editar -> Alt+E
- E&liminar -> Alt+L
- &Buscar -> Alt+B
- Añadir menú emergente al grid con las acciones de Edición y Eliminación (grid.ContextMenuStrip = contextMenu).
- Doble-Click en el grid para editar directamente (grid.DoubleClick).
- Permitir la eliminación de los registros seleccionados con la tecla de Suprimir (grid.UserDeletingRow).
- Este evento se lanza una vez por cada fila seleccionada. Comprobar que hemos implementado el control de esto.
- Cancelar siempre este evento, ya que el borrado lo hacemos nosotros y puede fallar al intentar eliminar una fila que ya no existe.
- Configurar el grid para que se seleccione la fila completa (grid.SelectionMode = FullRowSelect) y avisar que no puede modificarse (grid.ReadOnly = true).
- Limitar los campos de texto al número máximo de caracteres que permite la BD
- Los botones "Guardar" y "Cancelar" deben tener por defecto enabled a false.
- Comprobar que al cancelar una edición, el grid recupera los valores originales
- Los editores de la ficha deben estar por defecto con readonly a true.
- El DataBinding de los editores de la ficha debe estar correctamente enlazado.
- Los "hint" de los botones de modo y aceptación deben ser iguales en los formularios.
- Indicar el icono de la aplicación.