Forms o Ventanas abiertas

Post Reply
User avatar
Xevi
Posts: 168
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Forms o Ventanas abiertas

Post by Xevi »

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.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Forms o Ventanas abiertas

Post by Antonio Linares »

Xevi,

function GetAllWin() --> aWindows
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Forms o Ventanas abiertas

Post by cmsoft »

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:

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
 
Espero te sirva
User avatar
Xevi
Posts: 168
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Forms o Ventanas abiertas

Post by Xevi »

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()
...

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!!!
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: Forms o Ventanas abiertas

Post by hmpaquito »

Xevi,

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
Post Reply