Buenas compañeros después de un tiempo sin pasar por acá vuelvo a dar la
lata con un problemilla.
He preparado una función muy simple para cerrar todas las MDIChild del
MDIFrame principal, para ello utilizo la tabla Application:aForms pero
que sorpresa no tiene todas las form abiertas???
La MDIFrame siempre está y luego las child que voy abriendo estan la
mayoría pero a veces falta alguna.
Lo podéis probar con este código:
**************************************************
* Cerrar todas las MDICHILD del Form Principal *
**************************************************
Function CloseAllForm()
Local nItem
For nItem:=1 to Len(Application:aForms)
Msginfo(Application:aForms[nItem]:cText+Tostring(Application :aForms[nItem]:nFormType))
If Application:aForms[nItem]:nFormType=2
Application:aForms[nItem]:Close()
Endif
Next
Return Nil
Salu2.
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.
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.
Fallo en Application:aForms ???
-
- Mensajes: 1310
- Registrado: Mié Sep 26, 2007 7:12 pm
- ignacio
- Site Admin
- Mensajes: 9259
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Fallo en Application:aForms ???
Bingen,
Sin haberlo probado. Intenta:
WITH OBJECT Application
WHILE ( n := Ascan( :aForms, {|v| v:nFormType=2 ) ) > 0
:aForms[ n ]:Close()
END WHILE
END WITH
Un saludo,
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"Bingen Ugaldebere" <bingen@binarygeneration.com> escribió en el mensaje
news:48514a07$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Buenas compañeros después de un tiempo sin pasar por acá vuelvo a dar la
> lata con un problemilla.
>
> He preparado una función muy simple para cerrar todas las MDIChild del
> MDIFrame principal, para ello utilizo la tabla Application:aForms pero que
> sorpresa no tiene todas las form abiertas???
>
> La MDIFrame siempre está y luego las child que voy abriendo estan la
> mayoría pero a veces falta alguna.
>
> Lo podéis probar con este código:
>
> **************************************************
> * Cerrar todas las MDICHILD del Form Principal *
> **************************************************
> Function CloseAllForm()
> Local nItem
>
> For nItem:=1 to Len(Application:aForms)
>
> Msginfo(Application:aForms[nItem]:cText+Tostring(Application :aForms[nItem]:nFormType))
> If Application:aForms[nItem]:nFormType=2
> Application:aForms[nItem]:Close()
> Endif
> Next
>
> Return Nil
>
>
> Salu2.
Sin haberlo probado. Intenta:
WITH OBJECT Application
WHILE ( n := Ascan( :aForms, {|v| v:nFormType=2 ) ) > 0
:aForms[ n ]:Close()
END WHILE
END WITH
Un saludo,
--
Ignacio Ortiz de Zúñiga
[Soporte Xailer]
[Xailer support]
"Bingen Ugaldebere" <bingen@binarygeneration.com> escribió en el mensaje
news:48514a07$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Buenas compañeros después de un tiempo sin pasar por acá vuelvo a dar la
> lata con un problemilla.
>
> He preparado una función muy simple para cerrar todas las MDIChild del
> MDIFrame principal, para ello utilizo la tabla Application:aForms pero que
> sorpresa no tiene todas las form abiertas???
>
> La MDIFrame siempre está y luego las child que voy abriendo estan la
> mayoría pero a veces falta alguna.
>
> Lo podéis probar con este código:
>
> **************************************************
> * Cerrar todas las MDICHILD del Form Principal *
> **************************************************
> Function CloseAllForm()
> Local nItem
>
> For nItem:=1 to Len(Application:aForms)
>
> Msginfo(Application:aForms[nItem]:cText+Tostring(Application :aForms[nItem]:nFormType))
> If Application:aForms[nItem]:nFormType=2
> Application:aForms[nItem]:Close()
> Endif
> Next
>
> Return Nil
>
>
> Salu2.
Fallo en Application:aForms ???
Bingen,
el problema es que estás cerrando las ventanas mientras recorres el array, y
claro, al cerrar esas ventanas se eliminan de dicho array. P.ej.: cuando
nItem=1, se elimina el primer elemento del array, y el segundo elemento pasa
a ocupar la primera posición; a continuación se incrementa nItem, pero ya te
has saltado la ventana que al principio estaba en la segunda posición del
array.
La forma más sencilla de evitar este problema es recorrer el array en
sentido inverso:
For nItem:=Len(Application:aForms) TO 1 STEP -1
...
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
el problema es que estás cerrando las ventanas mientras recorres el array, y
claro, al cerrar esas ventanas se eliminan de dicho array. P.ej.: cuando
nItem=1, se elimina el primer elemento del array, y el segundo elemento pasa
a ocupar la primera posición; a continuación se incrementa nItem, pero ya te
has saltado la ventana que al principio estaba en la segunda posición del
array.
La forma más sencilla de evitar este problema es recorrer el array en
sentido inverso:
For nItem:=Len(Application:aForms) TO 1 STEP -1
...
--
Un saludo,
José F. Giménez
http://www.xailer.com
http://www.xailer.info
-
- Mensajes: 1310
- Registrado: Mié Sep 26, 2007 7:12 pm
Fallo en Application:aForms ???
Lo siento pero de las dos maneras me sigue dejando algún form abierto.
-
- Mensajes: 155
- Registrado: Mié Nov 03, 2004 12:42 pm
- Ubicación: Cancún, México
- Contactar:
Fallo en Application:aForms ???
Bingen,
Yo lo hago con:
Application:oMainForm:oMDIClient:CloseAll()
Saludos
Israel
"Bingen Ugaldebere" <bingen@binarygeneration.com> escribió en el mensaje
news:48514a07$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Buenas compañeros después de un tiempo sin pasar por acá vuelvo a dar la
> lata con un problemilla.
>
> He preparado una función muy simple para cerrar todas las MDIChild del
> MDIFrame principal, para ello utilizo la tabla Application:aForms pero que
> sorpresa no tiene todas las form abiertas???
>
> La MDIFrame siempre está y luego las child que voy abriendo estan la
> mayoría pero a veces falta alguna.
>
> Lo podéis probar con este código:
>
> **************************************************
> * Cerrar todas las MDICHILD del Form Principal *
> **************************************************
> Function CloseAllForm()
> Local nItem
>
> For nItem:=1 to Len(Application:aForms)
>
> Msginfo(Application:aForms[nItem]:cText+Tostring(Application :aForms[nItem]:nFormType))
> If Application:aForms[nItem]:nFormType=2
> Application:aForms[nItem]:Close()
> Endif
> Next
>
> Return Nil
>
>
> Salu2.
>
Yo lo hago con:
Application:oMainForm:oMDIClient:CloseAll()
Saludos
Israel
"Bingen Ugaldebere" <bingen@binarygeneration.com> escribió en el mensaje
news:48514a07$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Buenas compañeros después de un tiempo sin pasar por acá vuelvo a dar la
> lata con un problemilla.
>
> He preparado una función muy simple para cerrar todas las MDIChild del
> MDIFrame principal, para ello utilizo la tabla Application:aForms pero que
> sorpresa no tiene todas las form abiertas???
>
> La MDIFrame siempre está y luego las child que voy abriendo estan la
> mayoría pero a veces falta alguna.
>
> Lo podéis probar con este código:
>
> **************************************************
> * Cerrar todas las MDICHILD del Form Principal *
> **************************************************
> Function CloseAllForm()
> Local nItem
>
> For nItem:=1 to Len(Application:aForms)
>
> Msginfo(Application:aForms[nItem]:cText+Tostring(Application :aForms[nItem]:nFormType))
> If Application:aForms[nItem]:nFormType=2
> Application:aForms[nItem]:Close()
> Endif
> Next
>
> Return Nil
>
>
> Salu2.
>
Saludos
Israel
Israel
Fallo en Application:aForms ???
Bingen,
Prueba esto suponiendo que oMainForm es el MDIFrame principal.-
AEval( Application:oMainForm:oMDIClient:aForms, {|o| o:PostMsg( WM_CLOSE, TRUE )} )
Un saludo
Xavi
Bingen Ugaldebere escribió:
> Lo siento pero de las dos maneras me sigue dejando algún form abierto.
>
Prueba esto suponiendo que oMainForm es el MDIFrame principal.-
AEval( Application:oMainForm:oMDIClient:aForms, {|o| o:PostMsg( WM_CLOSE, TRUE )} )
Un saludo
Xavi
Bingen Ugaldebere escribió:
> Lo siento pero de las dos maneras me sigue dejando algún form abierto.
>
-
- Mensajes: 1310
- Registrado: Mié Sep 26, 2007 7:12 pm
Fallo en Application:aForms ???
Gracias Israel esta es la mas sencilla y funciona 100% Ok