Compartir a través de


Bibliotecas de clases de Comercial Tasmania

Se han creado seis bibliotecas de clases para Comercial Tasmania. Algunas de las decisiones clave en la programación de Comercial Tasmania tienen que ver con el nivel al que se debería incorporar cierta funcionalidad:

  • El nivel de la aplicación
  • El nivel del formulario
  • El nivel del control

Ejemplo Tastrade: funcionalidad de la clase Application

Se ha creado una clase aplicación genérica, Application, en Tsgen.vcx con una funcionalidad común a la mayoría de las aplicaciones. Esta clase proporciona la siguiente funcionalidad:

  • Guarda el entorno de Visual FoxPro.
  • Configura el entorno.
  • Restaura el entorno original de Visual FoxPro.
  • Ejecuta el menú principal.
  • Administra barras de herramientas de la aplicación.
  • Administra el procedimiento de inicio de sesión del usuario.
  • Administra formularios.

Hay una subclase de la clase Application, Tastrade, en Main.vcx que proporciona funcionalidad adicional específica para Comercial Tasmania:

  • Muestra la pantalla de inicio.
  • Ejecuta el componente inicial.

Se ha creado un objeto, oApp, en Main.prg a partir de la clase Tastrade.

En las siguientes secciones se describe y resume la funcionalidad de la clase Application.

Guardar el entorno de Visual FoxPro

La clase Application guarda el entorno de Visual FoxPro cuando se ejecuta la aplicación. El entorno de Visual FoxPro incluye los valores de comando SET tales como PATH, TALK, CARRY, etc. En el evento Init de la clase Application, el código agrega un nuevo objeto a Application basado en la clase Environment de Tsgen.vcx. En el evento Init de la clase Environment, el código almacena la configuración del entorno de Visual FoxPro existente en propiedades de la clase para poder recuperarla más adelante.

El código asociado al evento Init también almacena el título de la ventana principal de Visual FoxPro en la propiedad cOldWindCaption de la clase Application. Estos valores almacenados se restauran siempre que se libere un objeto basado en la clase Application.

Otro factor del entorno de Visual FoxPro son las barras de herramientas estándar que están activas cuando se ejecuta una aplicación. El método ReleaseToolbars( ) de Application almacena los nombres de las barras de herramientas del sistema, así como la información acerca de si estaban abiertas o cerradas cuando se ejecutaba la aplicación.

El código asociado al evento Init de la clase Application también empuja al menú del sistema en uso hacia la pila de menús para permitir que pueda restaurarse más adelante.

Configurar el entorno

Hay otro código en el evento Init de la clase Application que establece el entorno de tiempo ejecución. Este código:

  • Llama al método Set( ) de la clase Environment, el cual establece las bibliotecas de clases y de procedimientos, si se muestran registros eliminados (CLASSLIB, PROCEDURE, DELETED) y otros valores de configuración del entorno específicos de la aplicación.
  • Abre la base de datos para la aplicación.
  • Llama al método ReleaseToolbars( ) para liberar todas las barras de herramientas del sistema que estaban activas durante la ejecución de la aplicación.
  • Establece el título de la ventana principal de Visual FoxPro en el valor almacenado en la propiedad cMainWindCaption de la clase Application.

Restaurar el entorno original de Visual FoxPro

Cuando se cierra la aplicación, el código del método Cleanup( ) de la clase Application restaura el título original de la ventana principal de Visual FoxPro, cierra la base de datos, limpia las ventanas, ejecuta CLEAR EVENTS, restaura el menú inicial y llama al método ShowToolbars( ) para volver a abrir las barras del sistema de Visual FoxPro que aparecían en pantalla antes de que se ejecutara Tastrade.app.

Cuando se ejecuta CLEAR EVENTS, continúa la ejecución del programa más allá del comando READ EVENTS y el código de Main.prg libera oApp. Cuando se libera el objeto Application, tiene lugar el evento Destroy de la clase Environment porque es un miembro de la clase Application.

En el evento Destroy del objeto Environment, se llama al método Reset( ) del objeto Environment para restaurar la configuración del entorno de Visual FoxPro que estaba en uso cuando se creó el objeto Environment.

Ejecutar el menú principal y establecer el bucle de eventos

El código adicional del objeto Application ejecuta el menú principal asociado con la aplicación y establece el bucle de eventos. El método Do( ) de la clase Application recibe el nombre Main.prg en cuanto se crea el objeto Application. El método Do( ) ejecuta el programa de menú principal y emite READ EVENTS.

Administrar barras de herramientas de la aplicación

El objeto Application también realiza un seguimiento de las barras de herramientas de la aplicación. Hay una propiedad a nivel de formulario que indica qué barra de herramientas se debe asociar a cada formulario. Dado que sólo hay una barra de herramientas en esta aplicación, el valor de esta propiedad es el mismo para todos los formularios de la aplicación.

Los formularios de la aplicación llaman al método ShowNavToolbar( ) de la clase Application para mostrar la barra de herramientas. La aplicación sabe si la barra de herramientas ya existe y la muestra sólo cuando es necesario, lo que aumenta el valor de la propiedad nFormInstanceCount.

El método ReleaseNavToolbar( ) de la aplicación, llamado en el evento Destroy de los formularios, reduce el valor de la propiedad nFormInstanceCount y quita la barra de herramientas después de la liberación del último formulario.

Administrar el procedimiento de inicio de sesión del usuario

La mayoría de las aplicaciones que tienen en cuenta la seguridad proporcionan algún formulario de procedimiento de inicio de sesión. Para administrar dicho procedimiento, el método Login( ) de la clase Application llama al método DoFormRetVal( ) y pasa el nombre de la clase a la pantalla de inicio de sesión. Cuando el usuario inicia una sesión, una propiedad de la clase Application, cUserLevel, almacena el nivel de usuario para ese usuario.

Esta propiedad se utiliza en el código de postprograma de menú para eliminar elementos que no deberían estar visibles para un usuario determinado.

Administrar formularios

Excepto en el caso de formularios utilizados en informes para establecer intervalos de valores para los informes, los formularios de Comercial Tasmania se mostrarán mediante métodos de la clase Application. El método DoForm( ) acepta el nombre de un formulario y un parámetro que puede pasarse al formulario. El método DoFormRetVal( ) acepta el nombre de una clase de formularios y devuelve un valor especificado en el formulario.

Mostrar la pantalla de inicio

La subclase de la clase Application, Tastrade, en Main.vcx proporciona funcionalidad adicional específica para Comercial Tasmania. El evento Init llama al código de la clase primaria en la clase Application y, si debe aparecer la pantalla de inicio, llama a DoFormRetVal("introform").

Ejecutar el componente inicial cuando un usuario inicia una sesión

La subclase de la clase Application, Tastrade, en Main.vcx proporciona funcionalidad adicional especial para Comercial Tasmania. El código del método Do( ) sobrescribe el comportamiento predeterminado del método Do( ) de la clase Application. El código del método Do( ) llama al método GetStartupAction( ), que devuelve el componente de la aplicación que se va a ejecutar después de que un usuario inicie una sesión. Si hay un componente especificado para un usuario, el código del método Do( ) ejecuta este componente inicial.

Ejemplo Tastrade: funcionalidad de la clase Form

Comercial Tasmania incluye los siguientes tipos de formulario:

  • Formularios modales que devuelven un valor (por ejemplo, el formulario Inicio de sesión).
  • Formularios de entrada de datos (por ejemplo, los formularios Cliente y Entrada de pedidos).
  • Formularios de búsqueda (FindCustomer y FindOrder).
  • Formularios de propósito general (por ejemplo, los formularios Acerca de e Introductorio).

En la siguiente lista se enumeran las clases de formularios y sus jerarquías en Comercial Tasmania.

Clase Form Biblioteca de clases
tsFormRetVal Tsbase.vcx
IntroForm
Tsgen.vcx
Login
Login.vcx
   LoginPicture
Login.vcx
FindCustomer
Tsgen.vcx
FindOrder
Tsgen.vcx
tsBaseForm Tsbase.vcx
tsMaintForm
Tsbase.vcx
tsTextForm
Tsbase.vcx
OrderEntry
Orders.vcx
About
About.vcx

Formularios modales

Todos los formularios que devuelven un valor derivan, en algún nivel, de tsFormRetVal en Tsbase.vcx. Todas las clases de formularios de entrada de datos se basan en tsBaseForm en Tsbase.vcx.

tsFormRetVal impide el acceso a otros componentes mientras está activo.

Valores de la propiedad

AutoCenter = .T.
BackColor = Gris claro
BorderStyle = 2-Doble ancho
FontSize = 8
MaxButton = .F.
MinButton = .F.
WindowType = 1-Modal

Propiedades personalizadas

uRetVal: Contiene el valor devuelto del formulario. Puede ser cualquier tipo de datos; el prefijo "u" significa "desconocido" (unknown). uRetVal es .T. de forma predeterminada.

Para crear una instancia de una subclase, llame a Application.DoFormRetVal.

Formularios de entrada de datos

Los formularios de entrada de datos se basan en la clase tsBaseForm y están estrechamente integrados en la clase tsToolbar. tsBaseForm es la clase primaria de la mayoría de los formularios de la aplicación Comercial Tasmania. Proporciona la siguiente funcionalidad:

  • Exploración de tablas
  • Administración del acceso del usuario a datos
  • Coordinación de la interfaz

Valores de la propiedad

BufferMode = 2-Optimista

Propiedades personalizadas

aerrormsg[3] = Una matriz de mensajes de error. Esto permite que se escriba código de tratamiento de errores genérico en la clase primaria y personalizar los mensajes de error para que se definan en cada subclase. Los siguientes valores predeterminados se definen en el código asociado con el evento Init de formularios específicos:
aerrormsg[1] = "Error del desencadenador Insert."
aerrormsg[2] = "Error del desencadenador Update."
aerrormsg[3] = "Error del desencadenador Delete."
cToolBar: Contiene el nombre de la barra de herramientas que se ejecutará cuando se ejecute el formulario.
lAllowEdits: Si se puede o no modificar el registro actual.
lAllowDelete: Si se puede o no eliminar el registro actual.
lAllowNew: Si el usuario puede o no agregar nuevos registros

Funcionalidad asociada con eventos

Init: 1. Restaura la posición de la ventana anterior.2. Agrega el título del formulario al menú.3. Muestra la barra de herramientas de exploración.4. Inicializa la matriz de mensajes de error personalizada, aerrormsg[ ].
Activate: 1. Selecciona el alias especificado en la propiedad InitialSelectedAlias de entorno de datos del formulario.2. Actualiza la barra de herramientas de exploración.3. Actualiza el menú.4. Establece el mensaje de la barra de estado con la propiedad Caption del formulario.
Error: Define código genérico de tratamiento de errores para todos los formularios.
Destroy: 1. Quita el título del formulario del menú.2. Guarda la posición de la ventana en el archivo Tastrade.ini.
QueryUnload: Comprueba si se han modificado datos y solicita al usuario que guarde los cambios si es necesario.
Unload: Borra la barra de estado.

Métodos personalizados

First: Desplaza el puntero del registro al primer registro.
Next: Desplaza el puntero del registro al siguiente registro.
Prior: Desplaza el puntero del registro al registro anterior.
Last: Desplaza el puntero del registro al último registro.

Estos cuatro métodos comparten el siguiente comportamiento:

  • Llaman al método DataChanged( ) personalizado del formulario para que compruebe si hay cambios.
  • Llaman al método AskToSave( ) personalizado del formulario para pedir al usuario que guarde los cambios.

Métodos personalizados

Save: Guarda el registro actual.
Delete: Elimina el registro actual.
AddNew: Agrega un nuevo registro.
Restore: Restaura los valores originales de los campos (cancela los cambios).
AddToMenu: Agrega el título del formulario al menú Ventana.
RemoveFromMenu: Quita el título del formulario del menú Ventana.
AskToSave: Pregunta al usuario si desea guardar los cambios o si desea cancelar la última operación.
DataChanged: Devuelve .T. si se ha modificado algún dato del formulario actual.
WriteBuffer: Código para llevar el valor del control actual al búfer del registro.
RefreshForm: Rutina de actualización personalizada.
SaveWindowPos: Escribe las propiedades Top y Left del formulario en el archivo INI de la aplicación.
RestoreWindowPos: Lee las propiedades Top y Left del formulario desde el archivo INI de la aplicación y las establece.
WaitMode: Convierte el cursor del mouse en un reloj de arena para todos los controles de un formulario.

Formularios de búsqueda

Los formularios FindCustomer y FindOrder muestran las tablas de clientes y de pedidos, respectivamente, en una cuadrícula y permiten al usuario que cambie la etiqueta de índice. Se devuelve al formulario que llama el valor clave para la fila seleccionada cuando el usuario cierra el formulario.

Formularios de propósito general

Hay dos formularios de este tipo:

  • Formulario AboutBox
    El formulario AboutBox en About.vcx acepta parámetros en su evento Init para textos de títulos y un mapa de bits de logotipo. Esta clase utiliza funciones de la API para recuperar información tanto del archivo WIN.INI para Windows 3.x, como del Registro del sistema, para mostrar información acerca del sistema del usuario.
  • IntroForm
    El formulario IntroForm de Tsgen.vcx es la pantalla de inicio. En esta clase, el código asociado al evento Click de chkShowAtStartUp escribe un valor en el archivo Tastrade.ini para especificar si la pantalla de inicio se debería mostrar en adelante cuando se ejecute Comercial Tasmania.

Ejemplo Tastrade: funcionalidad de la clase Control

La mayoría de las clases de control de base de Visual FoxPro se han dividido en subclases para proporcionar una funcionalidad predeterminada adicional o una apariencia coherente. Siempre que se han necesitado grupos de controles en más de un sitio dentro de Comercial Tasmania, se ha creado una clase.

Debido a que la aplicación tenía que ejecutarse en una presentación de 640 x 480, la fuente predeterminada de estos controles se ha establecido en 8 puntos en lugar de 10, para ahorrar espacio en los formularios.

Las clases de controles se enumeran a continuación por bibliotecas.

Biblioteca de clases de Tsbase.vcx

Clase Descripción
ts3dShape La clase para controles Shape, que generalmente sirven para resaltar o enmarcar partes de un formulario
TsComboBox La clase para todos los cuadros combinados de la aplicación.
TsCommandButton La clase para todos los botones de comando de la aplicación.
TsEditBox La clase para todos los cuadros de edición de la aplicación.
TsGrid El método SumColumn sirve para sumar automáticamente un valor a una columna de cuadrícula. Esta clase se agrega a la página List del marco de página en la clase tsMaintForm.
TsLabel La clase para todas las etiquetas de la aplicación.
TsListBox La clase para todos los cuadros de lista de la aplicación.
TsTextBox La clase para todos los cuadros de texto de la aplicación.
OrdTextbox Una subclase de tsTextbox que se utiliza con los formularios Entrada de pedidos e Historia de pedidos.
TsToolBarButton La clase para todos los botones de comando que aparecen en barras de herramientas de la aplicación.

Biblioteca de clases de Tsgen.vcx

Clase Descripción
CustomerInfo Incluye etiquetas y cuadros de texto para los siguientes campos en la tabla de clientes.
DateRange Un control personalizado basado en la clase de base de control de Visual FoxPro.
Splitter Se utiliza en Información técnica para cambiar el tamaño de la lista de características y del cuadro de edición de la descripción.
TsMaintForm La clase para todos los formularios de mantenimiento de la aplicación.
TsToolBar La clase para la barra de herramientas de la aplicación.

Vea también

Ejemplos de soluciones | Ejemplo Comercial Tasmania | Diseño de la base de datos Tastrade | Diseño y creación de las clases de Comercial Tasmania | Escribir, comprobar y depurar Comercial Tasmania