Necesito saber los Forms o Ventanas abiertas en mi aplicación.
Hay una función que me devuelva las oWnd/oDlg abiertas ???
Algo así como WndMain():aForms ...
Gracias.
Forms o Ventanas abiertas
Forms o Ventanas abiertas
Un Saludo,
Xevi.
Aprendiz de la vida!!!
Xevi.
Aprendiz de la vida!!!
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Forms o Ventanas abiertas
Xevi,
function GetAllWin() --> aWindows
function GetAllWin() --> aWindows
Re: Forms o Ventanas abiertas
Generalmente, las ventanas se habren al llamado de una funcion o procedimiento.
Lo que puedes hacer es ir llevando un registro de cada apertura, para luego, si se vuelve a llamar estando abierta, simplemente hacer un restauracion de la ventana (tene en cuenta que las ventanas pueden estar minimizadas, o fuera de foco)
Yo lo hago de esta manera:
Espero te sirva
Lo que puedes hacer es ir llevando un registro de cada apertura, para luego, si se vuelve a llamar estando abierta, simplemente hacer un restauracion de la ventana (tene en cuenta que las ventanas pueden estar minimizadas, o fuera de foco)
Yo lo hago de esta manera:
Code: Select all
IF ASCAN(oApp:aVentanas,ProcName()) > 0
hHand := ASCAN(oApp:aVentanas,cVentana)
oApp:oWnd:Select(hHand)
oApp:oWnd:oWndClient:aWnd[hHand]:Restore()
RETURN
ELSE
AADD(oApp:aVentanas,ProcName())
ENDIF
Re: Forms o Ventanas abiertas
Gracias... probaré esta solución o incluso la aprovecho para un caso en el que estava pensando.
Al final, me he creado una función (de la mano de GetAllWin()) con la que controlo el cierre de la WINDOW principal
la llamo así
ACTIVATE WINDOW oWnd CENTERED VALID lCloseMainForm()
...
Al final, me he creado una función (de la mano de GetAllWin()) con la que controlo el cierre de la WINDOW principal
la llamo así
ACTIVATE WINDOW oWnd CENTERED VALID lCloseMainForm()
...
Code: Select all
static function lCloseMainForm()
Local nForms := 0
AEval( GetAllWin(), {|o| If( o:ClassName() == "TWINDOW" .or. o:ClassName() == "TDIALOG" , nForms ++, ) } )
Return nForms = 1
Un Saludo,
Xevi.
Aprendiz de la vida!!!
Xevi.
Aprendiz de la vida!!!
Re: Forms o Ventanas abiertas
Xevi,
Mejor asi:
Mejor asi:
Code: Select all
static function lCloseMainForm()
Local nForms := 0
AEval( GetAllWin(), {|o| If( o:IsDerivedFrom( "TWINDOW" ) .or. o:IsDerivedFrom( "TDIALOG" ), nForms ++, ) } )
Return nForms = 1