EVENTO: Curso de programación avanzada con objetos en Harbour y xHarbour.

Manu Expósito y yo estamos preparando un curso de programación avanzada con objetos en Harbour y xHarbour aplicable a Xailer (y otros entornos basados en Harbour) para marzo/abril. Nos gustaría saber cuantos estáis interesados para buscar local y calcular los costes. Espero vuestros comentarios en:

http://www.facebook.com/event.php?eid=287193734637239

Anuncios

Programación orientada a objeto avanzada con xHarbour (XI)

8.5. El AMB en un sistema MVC

Hoy estudiaremos como funciona un AMB en un sistema MVC.

Refiriéndome en todo momento al código contenido en el ejemplo 1, observamos que en la barra de botones del browse de conceptos disponemos de las siguientes opciones: Nuevo, Editar, Borrar, Filtrar y Salir. Mirando el código fuente de cada uno de los eventos “onClick” de estos botones, tenemos que para “Nuevo”, “Editar” y “Borrar” se llama a métodos del controlador; para “Filtrar” y “Salir” se llama a métodos del formulario y desde el evento “onClose” del formulario se ejecuta el método “salir()” del controlador.

Una vez visto el código del formulario, que como podemos comprobar es muy poca cosa (así es como conseguimos que sea independiente del resto del programa), pasemos a ver que hacen esos métodos del controlador:

8.5.1. Método “nuevo()”

  • Se encarga de dar de alta un nuevo objeto de la clase concepto.
  • Su ejecución sigue los siguientes pasos:
Método "nuevo()" de ctrconcepto

Método "nuevo()" de ctrconcepto

  1. Crea el objeto del formulario correspondiente.
  2. En la variable “cargo” del formulario guarda una “A” de alta. Para este caso no tiene ningún uso.
  3. Asigna el controlador al formulario.
  4. Muestra el formulario y espera respuesta.
  5. Si la respuesta es “mrOK” ( se ha pulsado el botón “Grabar” ), se crea un nuevo objeto de la clase “Concepto”, asigna los valores del formulario al objeto y ejecuta su método “grabar()”. Seguidamente, añade el nuevo objeto a la lista y al browse.
  6. Finaliza la ejecución y regresa al browse.

8.5.2. Método “editar()”

  • Se encarga de modificar datos del objeto seleccionado.
  • Su ejecución sigue los siguientes pasos:
Método "editar()" de ctrconcepto.

Método "editar()" de ctrconcepto.

  1. Comprueba si el browse contiene datos.
  2. Recupera el objeto guardado en la columna invisible del browse, correspondiente a la fila que se desea modificar.
  3. Guarda la posición de la fila actual.
  4. Crea el objeto del formulario de edición correspondiente.
  5. En la variable “cargo” del formulario guarda una “M” de “Modificación”. Para este caso no tiene uso.
  6. Asigna los valores del objeto a los campos del formulario.
  7. Asigna el controlador al formulario.
  8. Muestra el formulario y espera respuesta.
  9. Si la respuesta es “mrOK” ( se ha pulsado el botón “Grabar” ), se vuelcan los datos de los campos del formulario en los correspondientes del objeto y se ejecuta su método “grabar()”. Actualiza la correspondiente fila del browse.
  10. Finaliza la ejecución y vuelve al browse.

8.5.3. Método “borrar()”

  • Se encarga de dar de baja el objeto seleccionado.
  • Sigue los siguientes pasos:
Método "baja()" de ctrconcepto.

Método "baja()" de ctrconcepto.

  1. Comprueba si hay datos en el browse.
  2. Recupera el objeto guardado el la columna invisible de browse, correspondiente a la fila que se desea borrar.
  3. Muestra mensaje en pantalla y espera conformación para el borrado. En caso afirmativo, ejecuta el método borrar del  objeto y elimina la fila del browse.
  4. Finaliza la ejecución y regresa al browse.

8.5.4. Método “salir()”

  • Se encarga de cerrar el browse.
  • Cuando se ejecuta vacía el contenido de la variable que contiene el formulario del browse.

8.5.5. Método “checkDescripcion()”

  • Método del controlador, llamado desde el formulario, que sirve para comprobar que el campo “descripción” del formulario tenga contenido.
Método "checkDescripcion()" de ctrConcepto.

Método "checkDescripcion()" de ctrConcepto.


Hasta aquí hemos visto como se trabaja para construir un mantenimiento ABM con un browse previo usando MVC, en próximos artículos aprenderemos a construir una factura (maestro-detalle) usando estas técnicas. Para ello vamos a necesitar un mantenimiento de clientes y otro de artículos que dejo a vuestra imaginación su desarrollo; no hay que complicarse mucho, datos básicos del cliente (nombre, domicilio, cif) y datos básicos del artículo (descripción y precio). Espero vuestros trabajos por e-mail a joseasuarez@gmail.com.