28 de octubre de 2013

Ventajas y desventajas del uso de formularios basados en VCX o SCX

Autor: Drew Speedie
Traducido por: Ana María Bisbé York

Fragmento de la sesión VFP Tips and Tricks presentada por el autor en la Conferencia DevEssentials Kansas, 2004
Existen ventajas y desventajas para crear/guardar formularios VFP en .SCXs o .VCXs. He aquí algunas de ellas:

Formularios basados en VCX: VENTAJAS
  • Fácilmente subclaseable
  • Muchos formularios pueden estar contenidos en un fichero VCX/.VCT (desventaja para desarrollo en grupos)
  • Posibilidad de utilizar propiedades y métodos protegidos (Protected) y ocultos (Hidden)
  • Puede sustituir una subclase DataEnvironment definida por el usuario (programa .PRG) en tiempo de ejecución.
  • Control completo sobre la apertura de tablas/vistas
Formularios basados en VCX: DESVENTAJAS
  • No puede utilizar DataEnvironment visual nativo
  • Como no puede utilizar DataEnvironment visual nativo, debe llenar manualmente las propiedades ControlSources y RecordSources
  • Más dificultad para ejecutar/probar, son necesarios 2 ó 3 comandos
  • No existe una vía directa para devolver un valor de un formulario modal
  • No tiene disponible el Asistente de formulario (de todas formas no recomendamos utilizar asistentes nativos...)
  • Si varios formularios están contenidos en una librería .VCX/.VCT, el desarrollo en equipo se hace más difícil, debido a que es más complicado que más de un desarrollador trabajen con formularios diferentes guardados en el mismo archivo .VCX
Formularios basados en SCX: VENTAJAS
  • Puede utilizar DataEnvironment visual nativo
  • Si se utiliza DataEnvironment, puede llenar ControlSources y RecordSources a través de los cuadros desplegables
  • Es fácil de ejecutar/probar, con un comando o con la opción Ejecutar en la barra de herramientas estándar.
  • Una vía simple, directa para devolver un valor de un formulario modal.
  • Puede sustituir una subclase DataEnvironment definida por el usuario (programa .PRG) en tiempo de ejecución.
  • Tiene disponible el Asistente de formulario (de todas formas no recomendamos utilizar asistentes nativos...)
  • El desarrollo en equipo es menos problemático porque cada formulario está siempre guardado en su propio archivo .SCX/.SCT
Formularios basados en SCX: DESVENTAJAS
  • Un poco más difíciles de subclasear; la intención es utilizarlo en el nivel instanciado.
  • Sólo un formulario por archivo .SCX/.SCT (muchos archivos individuales), pero puede ser una ventaja en el desarrollo de proyectos en equipo (vea arriba)
  • No se pueden utilizar propiedades y métodos protegidos (Protected) y ocultos (Hidden)
  • No existe control real sobre la apertura de tablas/vistas en el DataEnvironment (aunque, si lo desea, lo puede realizar en el Form.Load(); pero perderá los beneficios de utilizar un DataEnvironment nativo, mientras tiene otros ventajas de formularios basados en SCX)
Existe una vía de tomar lo mejor de ambos mundos, particularmente para tomar las ventajas de poder agregar cursores a un formulario basado en .SCX DataEnvironment, donde los nombres de tablas y nombres de campos están disponibles en varias interfaces del Diseñador de formularios:
  1. Crea un formulario basado en .SCX
  2. Agregue cursores al DataEnvironment – estos cursores nunca serán abiertos en tiempo de ejecución, así sean tablas/vistas cuando estás utilizando objetos de negocio o DataEnvironment de usuario.
  3. Establecer la propiedad DataEnvironment.AutoCloseTables a .F.
  4. Establecer la propiedad DataEnvironment.AutoOpenTables a .F.
  5. Establecer manualmente el entorno de datos:
    • Agregar código manual en el Form.Load()
    • Agregar código en el Form.Load() para el lazo entre el DataEnvironment (ignorado en tiempo de ejecución) y ejecutar el código equivalente al objeto Cursor y sus propiedades en los objetos Relation.
    • Implementar su objeto DataEnvironment sustituto/de usuario
    • Liberar el control de los datos a su objeto de negocio
Esta técnica permite aprovechar todas las ventajas de los formularios basados en .SCX, mientras acomoda todas las consideraciones que típicamente fueron creadas para formularios basados en .VCX. Incluso en un desarrollo n-capas, si su capa intermedia proporciona cursores a la capa de presentación, puede agregar los cursores al DataEnvironment donde están disponibles en tiempo de diseño, y establecer simplemente la propiedad Alias al alias proporcionado en la capa intermedia.

Espero que les haya resultado de utilidad.

Saludos,

Ana María Bisbé York

No hay comentarios. :

Publicar un comentario

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.