Forms o Ventanas abiertas

Forms o Ventanas abiertas

Postby Xevi » Wed Dec 20, 2017 7:43 pm

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
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: Forms o Ventanas abiertas

Postby Antonio Linares » Wed Dec 20, 2017 8:00 pm

Xevi,

function GetAllWin() --> aWindows
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41205
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Forms o Ventanas abiertas

Postby cmsoft » Thu Dec 21, 2017 3:47 pm

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  Expand view

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
cmsoft
 
Posts: 1181
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: Forms o Ventanas abiertas

Postby Xevi » Thu Dec 21, 2017 5:16 pm

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  Expand view

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

Re: Forms o Ventanas abiertas

Postby hmpaquito » Thu Dec 21, 2017 5:29 pm

Xevi,

Mejor asi:

Code: Select all  Expand view
static function lCloseMainForm()
   Local nForms := 0

   AEval( GetAllWin(), {|o| If( o:IsDerivedFrom( "TWINDOW" ) .or. o:IsDerivedFrom( "TDIALOG" ), nForms ++, ) } )
   
Return nForms = 1
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 10 guests