Normas de Programación

De GrialWIKI

Introducción al Framework Grial

Índice

Contenido

Control de Errores

Se debe colocar control de errores en todos los procedimientos del tipo:

  • xxx_Click
  • xxx_DoubleClick
  • xxx_KeyPress
  • xxx_MouseMove

y también:

  • UserDocument_Show
  • UserDocument_Resize (Si se coloca código extra al standard)
  • GrialCont_ButtonClick (GrialApl)
  • GrialCont_ContainerFrmShow (GrialApl)
  • BottomButtonClick_Event (GrialApl)
  • GrialCont_ContainerFrmHide (GrialApl)
  • CurrentValueChanged (GrialCombo)

Debe agregarse un control de Errores (On Error Goto ErrH…) en todos los Procedimientos del tipo EVENTO, es decir, Subrutinas (Sub) que sean disparados por acciones del usuario. No es necesario para las subrutinas y funciones privadas dentro del módulo ya que no responden a ningún evento y solo se llaman desde otro punto del código.

Ejemplo de un Control de errores típico:

Sub BotonCmd_Click
 
On Error goto ErrH
...
'Código del procedimiento…
...
Exit Sub
ErrH:
  MsgError GrialCont
End Sub

Validaciones de Datos en el Front-End

En lo posible todas las validaciones de datos deben hacerse en conjunto, dentro de la rutina para tomar datos de la pantalla que es invocada una vez aceptada la transacción.

No se deben realizar validaciones en eventos como: GotFocus o LostFocus o RowColChange, ya que si el usuario elige cancelar la transacción, estos eventos se dispararán de todas formas, tal vez impidiéndole CANCELAR la transacción.

Las validaciones de datos se realizan en conjunto, una vez aceptada la transacción. No se deben realizar validaciones en eventos como LostFocus, GotFocus o RowColChange.


Colores y Tamaño de las pantallas

Selección de Colores

En todos los casos debe utilizarse la paleta de colores por tipo del sistema.(ButtonFace, ButtonText, WindowText, etc.)

En caso de mostrar un objeto tipo label con información referente a la transacción, para diferenciarlo de un label de uso común (usado como etiqueta de otro control), se elegirá el color azul puro (Código &H00FF0000&) para la propiedad ForeColor.

Tamaño de la Pantalla

Establecer el tamaño del “UserDocument” en:

Width: 12.000

Height: 8.100

Este tamaño es el máximo para visualizar en modo pantalla completa para una resolución de 800x600 en Windows XP. Si se requiere mayor espacio, se recomienda extenderse hacia la derecha (en el Width), en este caso, poner como Height 7.700, para tomar en cuenta la barra de desplazamiento horizontal que agregará Windows automáticamente.

Compilación a P-Code vs. Código Nativo

Se recomiendo compilar los módulos en P-Code, pero en caso que la velocidad de ejecución LOCAL del módulo es crítica (si el módulo posee procesos locales en el cliente, sean bucles for-next extensos o bucles recorriendo una gran cantidad de registros en un recordset) es posible obtener una mejora en tiempos de ejecución compilando a código nativo' en lugar de P-Code. El código ejecutable resultante posee en promedio el doble de tamaño que compilando a P-Code.

La opción del modo de compilación se encuentra en:

  • Menú Proyecto / Propiedades de … / Tab Compilar


Notas sobre rutinas obsoletas

Rutinas obsoletas en GrialUtil.DLL vs GrialUtilP.OCX

El componente DLL GrialUtil.DLL (DLL, incorporado a algunos modulos antiguos como referencia) 'es obsoleto', y debe reemplazarse por el componenente GrialUtilP.OCX (OCX, como componente)

Las rutinas en GrialUtilP.OCX han cambiado de nombre para homogeneizar el lenguaje:

Función en GrialUtilP OCX Función en GrialUtil DLL (Obsoleta)
NVLStr() NoNuloStr()
NoDataIn() EstaVacío()
IfEmptyNull() SiVacioNulo()

Diferencias entre el objeto SQLQuery y el objeto GrialTransaction

El Objeto SqlQuery es obsoleto y se mantiene por compatibilidad, posee las mismas funciones del objeto GrialTransaction, con la única diferencia en el método para aplicar la transacción:

El objeto GrialTransaction se aplica con el método Apply en tanto que en el SqlQuery se utiliza el método UpdateRecords

Por Ejemplo:

"SQLArea.UpdateRecords" es equivalente a: "GrialCont.Apply Txn"

Ambos comandos envían la transacción al servidor. (Aplican la transacción)

Se recomienda en los nuevos módulos utilizar objetos GrialTransaction que permiten el uso de conexiones a más de una base de datos simultáneamente.



Controles Registrados <<< >>> Como poner en Producción un módulo

Herramientas personales