gambafeliz   25-04-2021, 19:07
#1
Hola

Tengo un problema antiguo que no lo había notado hasta ahora. Y es que yo tengo un Formulario principal donde en el centro tengo un panel que se encarga de visualizar los formulario con Reparent pero me acabo de dar cuenta que aunque visualiza los formularios no los reinicia ninguna vez solo la primera vez que carga con Open el formulario principal y conforme se cargan la primera vez y después todo queda estático.

Por ejemplo si ustedes ponen un contador en tres formulario y hacen lo que yo osea cargarlos con reparent después no cambia el contador que pongan en el centro de cada formulario y este es mi problema, como hago para que se refresquen. Yo he pensado en poner un Timer pero eso es lo que quiero evitar.

¿Que se les ocurren a ustedes que sea mas elegante y correcto en Gambas?
Última modificación: 26-04-2021, 19:43 por gambafeliz.
jguardon   26-04-2021, 09:57
#2
Es completamente lógico. Los controles de los formularios se cargan con sus valores en el evento Form_Open si así lo has programado tú. El método reparent no vuelve a crear un formulario que ya existe en memoria, solo se limita a cambiar su ancestro.

Por lo tanto, para que los valores se actualicen con cada reparent, tendrás que buscar una forma de hacerlo por tu cuenta, por ejemplo, moviendo el contenido de Form_Open donde inicialices los valores a un método separado que puedas llamar primero desde el Open y luego desde (o a continuación) del Reparent.

En cualquier caso, creo que en este caso es responsabilidad del programador mantener los valores de los controles actualizados por métodos especificos a la medida de las necesidades, porque no parece que se haga mágicamente como cabría esperar.

Saludos

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
gambafeliz   26-04-2021, 15:55
#3
Gracias jguardon como siempre es un honor saludarte Smile

Tienes razón, pero como esto es un foro pues quizás no te he expresado todo lo bien que yo fuera querido.

Mira yo hago formulario.delete y supongo que lo destruyo, de esta forma la próxima vez que solicito un reparent del formulario yo en particular espero un Form_Open() pero después de la primera vez no ocurre más. Y por eso la pregunta. Yo pensaba que no hacia algo bien en lo particular y pensaba que tras delete pues se tenia que cargar todo de nuevo y así lo deje y así lo pensé.

Mi sorpresa fue cuando puse gridviews con datos y cuando volvía desde el menú a esta ventana con reparent es cuando vi que no cargaba ninguna novedad.

En fin, que harías tu, poner un timer estratégicamente. O en fin que hacéis ustedes que sois mas expertos en Gambas.

Mil gracias por tu ayudita y espero que estéis muy bien por la famili.
omoreno   26-04-2021, 19:18
#4
Hola gambafeliz.

También tuve ese problema, creía que el evento  "Form_Open()" siempre se ejecutaba cada vez que invocaba un formulario.
Prueba con "Form_Show()" y me comentas.

Mira este pequeño ejemplo utilizando el objeto "Workspace" y "Form_Open":
.gz
ConWorkspace-0.0.1.tar.gz (Tamaño: 12.73 KB Descargas: 2)


Saludos.
gambafeliz   26-04-2021, 19:42
#5
Muchas gracias omoreno mis saludos

Oye la verdad que lo probé pero supongo que usé un mal ejemplo y como no me fue bien pues lo rechacé, además probé uno a uno cada evento de form y ninguno me solucionó el problema. Pero como acabo de decirte supongo que fue el ejemplo que puse que no fue el correcto.

En fin muchisimas gracias de verdad.

Saludos a los dos Smile
  
Usuarios navegando en este tema: 3 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.