FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Forms o Ventanas abiertas
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Forms o Ventanas abiertas
Posted: Wed Dec 20, 2017 07: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!!!
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Forms o Ventanas abiertas
Posted: Wed Dec 20, 2017 08:00 PM

Xevi,

function GetAllWin() --> aWindows

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Forms o Ventanas abiertas
Posted: Thu Dec 21, 2017 03: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 (fw): Select all Collapse
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
Posts: 174
Joined: Wed Nov 29, 2017 11:42 AM
Re: Forms o Ventanas abiertas
Posted: Thu Dec 21, 2017 05: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 (fw): Select all Collapse
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!!!
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Forms o Ventanas abiertas
Posted: Thu Dec 21, 2017 05:29 PM
Xevi,

Mejor asi:

Code (fw): Select all Collapse
static function lCloseMainForm()
   Local nForms := 0

   AEval( GetAllWin(), {|o| If( o:IsDerivedFrom( "TWINDOW" ) .or. o:IsDerivedFrom( "TDIALOG" ), nForms ++, ) } )
   
Return nForms = 1

Continue the discussion