PC SOFT

AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente. Haga clic aquí para ver la versión en inglés.
  • Presentación
  • ¿Cómo proceder?
  • Los pasos para generar la ventana
  • Los elementos generados por el RAD
  • Gestión de errores en las clases generadas por el MVP RAD
  • WLanguage: Características específicas utilizadas para simplificar la arquitectura MVP
  • Presentación
  • "Atributo"Mapping
  • MyMappedFile y MyUniqueMappedKey palabras clave
  • "Atributo"Asociado
  • Atributo "Presentador": gestión de la actualización de vistas
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Otros
Procedimientos almacenados
Presentación
WINDEV propone un MVP RAD que genera las ventanas "tabla" y "form", así como las clases de Presentador y Modelo necesarias.
Las ventanas corresponden a las Vistas de MVP.
El código generado es libre y puede ser adaptado según las necesidades: es la generación del esqueleto de la aplicación básica.
Atención: Este modo de desarrollo utiliza OOP: requiere un buen conocimiento de estos conceptos. Este modo de desarrollo es un modo de desarrollo avanzado.
¿Cómo proceder?

Los pasos para generar la ventana

Para generar una ventana en modo "MVP RAD:
  1. Haga clic en en los botones de acceso rápido:
    • La ventana para crear nuevos elementos se abre: haga clic en "Ventana", y luego en "Ventana".
    • El asistente de creación de ventanas se abre automáticamente.
  2. En el asistente:
    • Haga clic en la pestaña "RAD.
    • Seleccione el patrón "MVP RAD"..
    • Seleccione el tipo de ventana a generar (Formulario o Tabla).
    • Validar la creación de la ventana asistente.
    • La generación de MVP RAD asistente comienza.
  3. En el asistente:
    • Especifique si RAD debe crear una nueva clase Presenter (opción necesaria si el MVP RAD no se ha utilizado ya).
    • Especifique si RAD debe crear una nueva clase Model (opción requerida si el MVP RAD no se ha utilizado ya).
    • Selecciona el archivo de datos para usar.
    • Seleccione los elementos a utilizar.
    • Especificar si RAD debe crear una nueva clase para la gestión de errores (opción necesaria si el MVP RAD no se ha utilizado ya)..
    • Personalizar (si es necesario) el nombre de las clases que se generarán.
    • Seleccione los miembros de la clase de modelo que se mostrará en la ventana (la vista).
    • Especifique el título y el nombre de la ventana que se generará.
  4. Valide el asistente.

Los elementos generados por el RAD

Al generar una ventana de Forma y una ventana de Tabla en un archivo de datos llamada "MyExampleFile", el MVP RAD genera 6 clases y 2 ventanas.
El MVP RAD genera 2 clases "base":
  • MBase: clase base de todas las clases del Modelo (M de Modelo). Contiene las funcionalidades básicas del código de negocios (que será compartido con las otras clases modelo a través de la herencia).
  • CError: para gestionar los errores. Esta clase centraliza el código para la gestión de los errores que pueden ser señalados por las diferentes clases (errores de negocio o errores de base de datos).
El MVP RAD también genera 2 clases de la capa "Modelo", específicas para el proyecto:
  • MMyExampleFile: clase que refleja los datos de la empresa. En este ejemplo, esta clase "mapea" directamente la estructura de la base de datos "MyExampleFile" (mediante el atributo "mapping").
  • MArrayMiArchivoDeEjemplo: clase de modelo para la ventana tabla. Contiene una array de objetos MMyExampleFile.
El MVP RAD también genera 2 clases de la capa "Presenter", específicas para el proyecto.
  • PTableMiArchivoDeEjemplo: gestiona la visualización de los datos en la ventana de visualización o tabla.
  • PFormMiArchivoDeEjemplo: gestiona la visualización de datos en la ventana de vista o formulario.

Gestión de errores en las clases generadas por el MVP RAD

En el RAD de MVP, los errores se soportan mediante un CError clase. Cada uno de los procedimientos del presentador espera un CError paramétrico. Por lo tanto, las vistas pueden recuperar los posibles errores generados por el presentador.
clError is CError
// Validation
IF NOT gclPresenter.bOK(clError) THEN
Error(clError.FormatMessage())
RETURN
END
De hecho, sólo la vista muestra los posibles errores (y no el modelo o el presentador).
Este modo de gestión de errores (procedimiento que espera el parámetro CError) permite un desarrollo de la aplicación más riguroso.
WLanguage: Características específicas utilizadas para simplificar la arquitectura MVP

Presentación

Para simplificar la implementación de una arquitectura MVP, es importante identificar y entender los elementos específicos de WLanguage:
  • el atributo de mapeo (así como las palabras clave MyMappedFile y MyUniqueMappedKey),
  • el atributo asociado,
  • el atributo de presentador,
  • las funciones RequestRefreshUI y RequestRefreshUIParent, y la ventana (o reporte) evento actualización.
El MVP RAD usa estas nuevas características pero pueden ser usadas en cualquier tipo de arquitectura.

"Atributo"Mapping

El atributo mapping se utiliza para crear un "vínculo directo" entre la clase y el archivo de datos.
Ejemplo:
MMyExampleFile is Class,mapping = MyExampleFile
Mediante este atributo:
  • MemoryToFile copiará automáticamente el valor de los miembros de la clase en los elementos del registro del archivo actual.
  • FileToMemory copiará automáticamente los elementos del registro del archivo actual a los miembros de la clase.
Importante:
  • Para que este mecanismo funcione, los nombres de los miembros de la clase deben ser idénticos a los nombres de los artículos de el archivo de datos.
  • Si es necesario: los mapeo permite utilizar prefijos o nombres que difieren de los del análisis. Para ello, reutilice el mapeo palabra clave sobre los miembros de la clase para recrear el vínculo entre el miembro y su elemento de análisis.
    Ejemplo:
    m_sEstateTitle is ANSI string <MAPPING=EstateTitle>

MyMappedFile y MyUniqueMappedKey palabras clave

En la clase MBase generada por el MVP RAD, se utilizan dos palabras clave para simplificar la gestión del mapeo: MyMappedFile y MyUniqueMappedKey. Estas palabras clave se utilizan para identificar, para la clase base MBase, el archivo y la clave única del modelo:
  • MyMappedFile hace referencia a el archivo de datos definido por la palabra clave mapping en la clase "Modelo"..
    Por ejemplo, en el método bSave de la clase MBase se utiliza el siguiente código:
    HReset(MyMappedFile)

    Este código realizará una llamada a HReset en el archivo de datos para la cual se generó el RAD.
  • MiUniqueMappedKey hace referencia al artículo definido por el mapeo de la "clave única" en la clase "Modelo.
    Por ejemplo, en la clase MMyExampleFile, MyUniqueMappedKey es equivalente al elemento MyExampleFileID:
    m_nMyExampleFileID is int<MAPPING=MyExampleFileID, unique key>
Estas palabras clave le permiten utilizar código genérico en esta clase base.

"Atributo"Asociado

El relacionado se usa para acceder a los miembros, los métodos y las propiedades de una clase Model desde su clase Presenter sin tener que realizar ningún "rebote"..
Ejemplo:
PFormMyExampleFile is Class
PROTECTED
m_clCurrentModel is MMyExampleFile <associated>
En el ejemplo anterior, los objetos PFormMyExampleFile tienen un miembro "asociado" cuyo tipo es MMyExampleFile.
Los objetos PFormMyExampleFile exponen directamente los métodos, propiedades y miembros de la clase asociada, sin necesidad de redefinirlos.
A través de la relacionado no es necesario recrear sistemáticamente todas las propiedades de la clase presentadora para exponer a los miembros del modelo.
La arquitectura MVP generada por el RAD contiene clases genéricas y clases específicas para el proyecto.. Se puede personalizar por completo!
Simplemente crea los métodos y propiedades deseados en la clase "Presentador" para anular el comportamiento del modelo.
Tiene la posibilidad de vincular un control a un miembro o a una propiedad de la clase "Presentador".. Por lo tanto, este enlace se puede realizar en todos los miembros o propiedades del "Modelo", expuesto por la clase "Presentador" con este mecanismo.

Atributo "Presentador": gestión de la actualización de vistas

El conferenciante se usa durante la declaración global de las ventanas generadas. Permite asociar una clase de la capa presentadora a una vista (ventana o reporte)..
Por ejemplo:
PROCEDURE WIN_Table_MyExampleFile(...
gclPresenter is PTableMyExampleFile dynamic<presenter>=Null)
Cuando se utiliza este atributo, la llamada al evento de la ventana actualización será disparada por:
Por ejemplo, cuando se borra un elemento de una ventana de la Tabla generada por el MVP RAD, se realiza una petición de actualización de la UI mediante la llamada a RequestRefreshUI:
  • MArrayMyExampleFile es miembro asociado de PTableMyExampleFile,
  • PTableMyExampleFile se define como "presentador" de la ventana "WIN_Table_MyExampleFile".
Entonces, el evento actualización de "WIN_Table_MyExampleFile" será llamado automáticamente cuando un elemento sea eliminado.
El evento UI actualización permite agrupar todos los procesos de la ventana actualización, en lugar de distribuirlos en varios eventos (click, etc.).
Este mecanismo también se encuentra en la ventana del formulario. La ventana de formulario es relacionado a la clase de presentador PFormMyExampleFile que contiene un miembro asociado MMyExampleFile. Por lo tanto, las peticiones de actualización realizadas en MMyExampleFile afectan a la ventana del formulario.
Atención: El evento UI actualización no debe ser ejecutado "en cualquier lugar"..
Importante: RequestRefreshUI y RequestRefreshUIParent son asincrónicas: el evento UI actualización se ejecuta al final del proceso actual, y las llamadas a RequestRefreshUI o RequestRefreshUIParent no se apilan. Estas funciones y este mecanismo pueden incluso utilizarse fuera de una arquitectura MVP. Este modo de funcionamiento ofrece una gran ventaja: si un bucle de proceso en el modelo llama a RequestRefreshUI 50 veces, WLanguage realizará una sola llamada al final del proceso (evita que la UI parpadee).
Observación: para solicitar una UI síncrona actualización, simplemente use ExecuteRefreshUI (o ExecuteRefreshUIParent).
Versión mínima requerida
  • Versión 20
Comentarios
Haga clic en [Agregar] para publicar un comentario