20 de septiembre de 2015

Cuidado con las trampas del ActiveForm

Autor: Mike Lewis
Texto original: Watch out for the ActiveForm trap
http://www.ml-consult.co.uk/foxst-08.htm
Traducido por: Ana María Bisbé York


Algunos buenos consejos a tener en mente cuando utilicemos la propiedad ActiveForm.

Probablemente conoce que _Screen.ActiveForm contiene una referencia sobre cualquier formulario que está activo en su aplicación. Puede sacar provecho de esto para escribir código genérico. Por ejemplo, si desea una forma genérica para cerrar el formulario actual, puede hacer lo siguiente:

_ Screen.ActiveForm.Release

Este código por ejemplo, se puede colocar en el procedimiento asociado con el comando Cerrar del menú Ficheros.

Sin embargo, cuando no hay ningún formulario activo, cualquier referencia a _Screen.ActiveForm va a producir un mensaje de error: “ACTIVEFORM no es un objeto” ("ACTIVEFORM is not an object"). Entonces si el usuario selecciona el comando Cerrar cuando no hay formulario activo que cerrar, ocurrirá un error.

Puede verificar esta condición utilizando la función TYPE(). De esa manera va a devolver U (de indefinido - undefined), si no existen formularios abiertos. Alternativamente, se puede verificar _SCREEN.FormCount, el que contendrá cero cuando no hay formularios activos.

En el caso del menú de comandos, un buen lugar para colocar esta verificación será en la cláusula Saltar si (Skip for) del elemento del menú (ejemplo) De esta forma el comando aparecerá en un tono grisáceo indicando que en ese momento está sin efecto. Si usa el generador de Menú, puede colocar la condición para el “Saltar si” en la ventana de texto de la opción de condición para el salto. La encontrará oprimiendo del botón de la extrema derecha.

Mike Lewis Consultants Ltd.

No hay comentarios. :

Publicar un comentario