Pantallas en fox

Tengo un formulario en fox para altas, bajas y modficaciones de los datos de una tabla. Cuando hago clic en un botón "Nuevo" o "Modificar", se pueden editar los datos. En uno de los campos (código de programación) con la tecla F1 puedo abrir otro formulario que me muestra un listado de las programaciones existentes. Cuando el usuario presiona enter la idea es que le traiga automáticamente el cod de prog. Elegida. Pero resulta que cuando libero el segundo formulario y vuelvo al primero donde estaba editando el registro, se me desactivan todos los campos, es como si saliera del modo edición, y ya no puedo hacer más nada.
¿Qué solución me propones?.
Otra pregunta, ¿cómo puede referirme en un formulario las propiedades de los controles de otro formulario?
Muchas Gracias

1 respuesta

Respuesta
1
Creo que con la respuesta que te voy a dar voy a matar dos pájaros de un tiro.
Cuando creas un formulario en vfp tienes la opción de crear un conjunto de formularios. Te explico: con un conjunto de formularios puedes tener varios form relacionados a través de un objeto superior denominado formset y cuando necesites trabajar en uno o en otro puedes mostrarlo (más no invocarlos que es lo que estas haciendo, debido a que todos los form del conjunto de formularios están activos, sólo que unos se ven y otros no)
Para activar un conjunto de formularios debes hacer lo siguiente:
1. Con el form que tu tienes como principal en tiempo de diseño te vas a la barra de menú y elijes la opción formulario, cuando se te despliegue el emergente elijes la opción conjunto de formularios e inmediatamene elijes agregar formulario.
Si te vas a la paleta de propiedades puedes ver que tienes un objeto contenedor llamado formset1 y dos formularios form1 y form2. Para hacer referencia a uno u otro debes colocar por ejemplo:
Supongamos que creas un conjunto de formularios con dos form (form1 y form2) en el form1 tienes un cuadro de text1 (text1) y en el form2 tienes un botón de comando. El ejercicio consiste en que cuando presione el botón de comando de form2 aparezca la fecha del sistema en el cuadro de texto de form1. La línea de código de command1 que está en form2 será :
thisformset.form1.text1.value = date()
De manera que thisformset es el contenedor de form
Form1 el formulario que deseas activar y el resto ya lo debes conocer.
Al ejecutar este ejemplo podrás resolver parte de tus dudas, Si deseas puedes colocar un form (el 1 o el 2) con la propiedad visible en falso y cuando la aplicación arranque solo verás el que tu decidas. Para mostrar el otro form el codigo sera
thisformset.form1.show y el formulario aparecerá.
Recuerda algo importante : para terminar la aplicación debes asegurarte que los dos form (o 3 ó 4 ó 5...) de lo contrario tu aplicación dará problemas más adelante.
Si deseas puedo enviarte un ejemplo chevere por e-mail pero debes darme tu dirección .
Suerte
Muy buena la solución, solo que al final de la explicación decís:
... debes asegurarte que los dos (o 3 o3, etc) de lo contrario... ¿asegurarme qué?
Supongamos que la tienes un formulario base y dos formularios más, que juntos conforman tu conjunto de formularios. Supongo que no todos están visibles al tiempo, y que el botón de salir está en el principal. He ahí mi aclaratoria debes asegurarte de desactivar todos los formularios o sea todos y cada uno de los forms del conjunto deben ser desactivados con release u cualquier otro método que tu escojas de manera de evitar que queden activos y tu aplicación genere errores posteriores.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas