Administrar múltiples instancias de un formulario
Puede tener activas varias instancias de una definición de clase al mismo tiempo. Por ejemplo, puede diseñar un formulario de pedidos, pero tener varios pedidos abiertos en su aplicación. Cada pedido utiliza la misma definición de formulario, pero se muestra y manipula individualmente.
Si dispone de múltiples instancias de un formulario, los puntos clave que deberá tener en cuenta son los siguientes:
- Cree una propiedad de matriz en el formulario de inicio para almacenar las variables de objeto asociadas con cada instancia del formulario de múltiples instancias. El modo más sencillo de hacer un seguimiento de las variables de instancia cuando no se sabe con antelación cuántas va a tener consiste en utilizar una matriz.
- ,Establezca la propiedad DataSession en 2 – Sesión privada de datos para el formulario que va a tener varias instancias. Una sesión privada de datos proporciona un conjunto independiente de áreas de trabajo para cada instancia del formulario de forma que las tablas seleccionadas y las posiciones de puntero de registro sean todas independientes.
El ejemplo siguiente proporciona código que muestra cómo se crean múltiples instancias de un formulario. Para no hacerlo demasiado extenso, este código no está optimizado; está pensado únicamente para presentar los conceptos.
El formulario siguiente inicia múltiples instancias:
Valores de la propiedad para Launch.scx
Objeto | Propiedad | Valor |
---|---|---|
frmLaunch | aForms[1] |
|
Código de evento para Launch.scx
Objeto | Evento | Código |
---|---|---|
cmdQuit | Click |
|
cmdLaunch | Click |
|
Para ajustar el código de este ejemplo, podría administrar la matriz de objetos de formulario de modo que se cerraran los elementos vacíos de la matriz reutilizados como formularios y se abrieran nuevos formularios, en lugar de redimensionar siempre la matriz y aumentar en uno el número de elementos.
El formulario que puede tener múltiples instancias es Multi.scx. El entorno de datos para este formulario contiene la tabla Employee.
Múltiples instancias de Multi.scx
Valores de la propiedad para Multi.scx
Objeto | Propiedad | Valor |
---|---|---|
txtFirstname | ControlSource |
|
txtLastName | ControlSource |
|
frmMulti | DataSession | 2 - Sesión privada de datos |
Al elegir Iniciar formulario en el formulario Launch, se crea una instancia del formulario Multi. Al cerrar el formulario Launch se libera la matriz de propiedades aForms y se destruyen todas las instancias de Multi.
Visual FoxPro proporciona algunas funciones y propiedades que le ayudan a administrar múltiples instancias de objetos. Para obtener más información, consulte AINSTANCE( ), AUSED( ) y DataSessionID.
Vea también
Guardar un formulario como HTML | Establecer el área de diseño de un formulario | Crear formularios | Crear formularios con datos locales y remotos | DataSession