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.

Fallo en Application:aForms ???

Foro de Xailer profesional en español
Responder
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Fallo en Application:aForms ???

Mensaje por Bingen Ugaldebere »

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.
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Fallo en Application:aForms ???

Mensaje por ignacio »

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.
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5706
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Fallo en Application:aForms ???

Mensaje por jfgimenez »

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
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Fallo en Application:aForms ???

Mensaje por Bingen Ugaldebere »

Lo siento pero de las dos maneras me sigue dejando algún form abierto.
Israel Solis
Mensajes: 155
Registrado: Mié Nov 03, 2004 12:42 pm
Ubicación: Cancún, México
Contactar:

Fallo en Application:aForms ???

Mensaje por Israel Solis »

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.
>
Saludos :D

Israel
xAvi
Mensajes: 108
Registrado: Mar Abr 08, 2008 6:12 pm

Fallo en Application:aForms ???

Mensaje por xAvi »

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.
>
Bingen Ugaldebere
Mensajes: 1310
Registrado: Mié Sep 26, 2007 7:12 pm

Fallo en Application:aForms ???

Mensaje por Bingen Ugaldebere »

Gracias Israel esta es la mas sencilla y funciona 100% Ok
Responder