In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

TForm:OnClose

Foro de Xailer profesional en español
Responder
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TForm:OnClose

Mensaje por zeasoftware »

Tengo algo curioso, unas ventanas MDI que uso en mi aplicacion me estan eliminando los datos de mi StatusBar, la razon? aun no la detecto.
Uso lo siguiente:
TForm1:OnClose := {|| TForm:=Nil, .t. }
Esto lo hago para saber si la ventana ya esta abierta, por lo que solo hago un Show, y si la cierro, pues pongo el valor de la ventana a nil para crearla de nuevo, pero....., si uso mi opcion ::CLOSE(), todo bien, pero si uso la [X] de cerrar la ventana MDI, me elimina toda la informacion de la StatusBar del oMainForm.
Algun Bug? o algo estoy haciendo mal?, que hago mal?
Gracias.
--
Ramón Zea
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoft/
--
_support_
Mensajes: 146
Registrado: Lun Abr 10, 2006 1:29 pm

TForm:OnClose

Mensaje por _support_ »

Ramón,
No veo claro el código que manda. Por favor mande un ejemplo y podremos ayudarle.
Un saludo,
"Ramón Zea" <zeasoftware@hotmail.com> escribió en el mensaje news:[email=44d83a94@news.xailer.com...]44d83a94@news.xailer.com...[/email]
Tengo algo curioso, unas ventanas MDI que uso en mi aplicacion me estan eliminando los datos de mi StatusBar, la razon? aun no la detecto.
Uso lo siguiente:
TForm1:OnClose := {|| TForm:=Nil, .t. }
Esto lo hago para saber si la ventana ya esta abierta, por lo que solo hago un Show, y si la cierro, pues pongo el valor de la ventana a nil para crearla de nuevo, pero....., si uso mi opcion ::CLOSE(), todo bien, pero si uso la [X] de cerrar la ventana MDI, me elimina toda la informacion de la StatusBar del oMainForm.
Algun Bug? o algo estoy haciendo mal?, que hago mal?
Gracias.
--
Ramón Zea
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoft/
--
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TForm:OnClose

Mensaje por zeasoftware »

Uso esto:
METHOD Lineas( oSender ) CLASS SCIPrincipal
IF !( ::ofrmLineas == nil )
::ofrmLineas:SetFocus()
ELSE
::ofrmLineas := TLineas():New( Application:oMainForm )
::ofrmLineas:OnClose := {|| ::ofrmLineas := Nil, .t. }
ENDIF
If !( ::ofrmLineas == Nil )
::ofrmLineas:Show()
End
RETURN Nil
y sucede lo que describí­ en el principal mensaje.
Gracias.
Ramón Zea
--
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

TForm:OnClose

Mensaje por jose.luis »

Hola Ramón,
En el código que muestras:
::ofrmLineas:OnClose := {|| ::ofrmLineas := Nil, .t. }
Qué sentido le das a ::oFrmLineas := NIL ??
Por lo que veo, en el evento onClose del formulario oFrmLineas, estás destruyendo el propio objeto oFrmLineas sin más, lo cual, bajo mi entender, puede ser un gran peligro para la estabilidad de tu aplicación.
Saludos,
José Luis Capel
"Ramón Zea" <zeasoftware@hotmail.com> escribió en el mensaje news:[email=44d8c8cb@news.xailer.com...]44d8c8cb@news.xailer.com...[/email]
Uso esto:
METHOD Lineas( oSender ) CLASS SCIPrincipal
IF !( ::ofrmLineas == nil )
::ofrmLineas:SetFocus()
ELSE
::ofrmLineas := TLineas():New( Application:oMainForm )
::ofrmLineas:OnClose := {|| ::ofrmLineas := Nil, .t. }
ENDIF
If !( ::ofrmLineas == Nil )
::ofrmLineas:Show()
End
RETURN Nil
y sucede lo que describí­ en el principal mensaje.
Gracias.
Ramón Zea
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

TForm:OnClose

Mensaje por jfgimenez »

Ramón,
Uso esto:
METHOD Lineas( oSender ) CLASS SCIPrincipal
IF !( ::ofrmLineas == nil )
::ofrmLineas:SetFocus()
ELSE
::ofrmLineas := TLineas():New( Application:oMainForm )
::ofrmLineas:OnClose := {|| ::ofrmLineas := Nil, .t. }
ENDIF
If !( ::ofrmLineas == Nil )
::ofrmLineas:Show()
End
RETURN Nil
y sucede lo que describí­ en el principal mensaje.
Con solo este código no puedo decirte qué puede estar fallando. Aparentemente no hay nada raro, pero necesito un ejemplo completo para revisarlo.
--
Un saludo,
José F. Giménez
http://www.xailer.com
--
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TForm:OnClose

Mensaje por zeasoftware »

Que valor tomaria oFrmLineas una vez cerrada la ventana?
Gracias..
--
Ramón Zea
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoft/
--
jose.luis
Mensajes: 1633
Registrado: Vie Oct 14, 2005 10:56 pm

TForm:OnClose

Mensaje por jose.luis »

Ramón:
LOCAL oFrm
oFrm := tMiFormulario():New( Self )
oFrm:ShowModal()
oFrm sigue existiendo como objeto aunque los controles Windows se hayan destruido. Si quieres destruir el objecto oFrm, puedes hacer un oFrm:End() después del oFrm:ShowModal.
Saludos,
José Luis Capel
PD: Espero que me corrija José Giménez si me he equivocado
"Ramón Zea" <zeasoftware@hotmail.com> escribió en el mensaje news:[email=44d957c0@news.xailer.com...]44d957c0@news.xailer.com...[/email]
Que valor tomaria oFrmLineas una vez cerrada la ventana?
Gracias..
--
Ramón Zea
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoft/
--
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TForm:OnClose

Mensaje por zeasoftware »

Te explico un poco mas:
Este proceso lo estoy utilizando por que estoy usando ventanas MDI y pues los botones del mi ToolBar estan disponibles en todo momento, por lo que para saber si esa ventana ya se encuentra abierta hago el proceso que menciono en mensajes anteriores:
If ofrmXXXXX <> Nil /// ya esta abierta por lo que solo uso ofrmXXXX:Show()
Pero, si el usuario cierra dicha ventana, en vez de cambiar a otra es lo que me esta generando dicho "error".
Gracias por tu ayuda, todo es bienvenido.
--
Ramón Zea
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoft/
--
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

TForm:OnClose

Mensaje por jfgimenez »

Ramón, José Luis,
Te explico un poco mas:
Este proceso lo estoy utilizando por que estoy usando ventanas MDI y pues los botones del mi ToolBar estan disponibles en todo momento, por lo que para saber si esa ventana ya se encuentra abierta hago el proceso que menciono en mensajes anteriores:
If ofrmXXXXX <> Nil /// ya esta abierta por lo que solo uso ofrmXXXX:Show()
Pero, si el usuario cierra dicha ventana, en vez de cambiar a otra es lo que me esta generando dicho "error".
Esta técnica es correcta, de hecho es la que está usando el ejemplo dbfdata6 para evitar que el usuario abra varias veces el mismo apartado del programa. Pero en algún sitio tienes que tener algo mal, porque en dicho ejemplo está funcionando perfectamente.
--
Un saludo,
José F. Giménez
http://www.xailer.com
--
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TForm:OnClose

Mensaje por zeasoftware »

Si pero en DBFData6 cambian de TForm a TFormFolder, y veo que el comportamiento es distinto, ya hice varias pruebas, incluso abri todas las ventanas, las intercambie, las cerre con mi opcion "cerrar" = ::Close() y nunca falla, es solo al usar la [x] de la ventana Hija.
Seguire buscando y les aviso.
Gracias.
--
Ramón Zea
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoft/
--
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TForm:OnClose

Mensaje por zeasoftware »

Estoy notando que igual se me pierde la ToolBar cuando le doy click a alguna opcion del menu de la aplicacion, que podra ser?
Gracias.
--
Ramón Zea
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoft/
--
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TForm:OnClose

Mensaje por zeasoftware »

Tenia aplicada la propiedad lSimple := .t., ahora lo he quitado y se desaparece pero se reintegra, al parecer era uno de los culpables, pero sigo en las pruebas.
Gracias
6:00 am buenos dias desde Mexico
--
Ramón Zea
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoft/
--
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

TForm:OnClose

Mensaje por jlalin »

Ramón,
no hay ninguna propiedad lSimple en ToolBar ni en Rebar.
Saludos,
José Lalí­n
zeasoftware
Mensajes: 1831
Registrado: Mar Oct 11, 2005 9:53 am

TForm:OnClose

Mensaje por zeasoftware »

No esta en la StatusBar, por que ahi radica mi problema.
Estoy notando que ahora, despues de poner lSimple := .f., ya se vuelve a
pintar la StatusBar, pero cuando voy a una opcion del oMenu, me la borra,
supongo por la opcion de mensaje en cada opcion del menu, pero no tengo
ningun mensaje en el menu.
Como indico que no quiero que me despliegue estos mensajes?
Gracias.
--
Ramón Zea
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoft/
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

TForm:OnClose

Mensaje por jfgimenez »

Ramón,
> No esta en la StatusBar, por que ahi radica mi problema.
> Estoy notando que ahora, despues de poner lSimple := .f., ya se vuelve a
> pintar la StatusBar, pero cuando voy a una opcion del oMenu, me la borra,
> supongo por la opcion de mensaje en cada opcion del menu, pero no tengo
> ningun mensaje en el menu.
No sé si te he entendido bien, pero ese es el comportamiento normal de
windows. Cuando despliegas el menú de la ventana, la statusbar se pone en
modo simple (desaparecen todos los paneles) y muestra los mensajes
correspondientes a cada opción del menú sobre el que te sitúes. Lo puedes
ver en multitud de programas, p.ej. Internet Explorer, Outlook Express, ...
> Como indico que no quiero que me despliegue estos mensajes?
Puedes asignar el evento OnMenuSelect del formulario, aunque en él no hagas
absolutamente nada.
--
Un saludo,
José F. Giménez
http://www.xailer.com
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder