MDICHILD y :Hide() -- Problema en FWH 25.06

Post Reply
FiveWiDi
Posts: 1467
Joined: Mon Oct 10, 2005 2:38 pm

MDICHILD y :Hide() -- Problema en FWH 25.06

Post by FiveWiDi »

Buenas tardes Antonio,

He cambiado de la versión FWH 25.01 a la 25.06 y me encuentro con este problema (me afecta poco).

Defino una MDICHILD así:

Code: Select all | Expand

DEFINE WINDOW oWndTimer MDICHILD FROM 0,0 TO 1,1 TITLE ;
        " " COLORS J02CLRTEXTO,J02CLRWND OF ;
        AMPAarra[1][1][2][1][1] NOZOOM PIXEL 
Defino un Timer así:

Code: Select all | Expand

DEFINE TIMER oTimer1 OF oWndTimer INTERVAL 60000 ACTION hb_threadStart( { || ;
		                                                        ( oTimer1:Deactivate(), ;
									  WarningDemo( .T., .F. ), ;
									  oTimer1:Activate() ) } )
Activo la MDICHILD así:

Code: Select all | Expand

ACTIVATE WINDOW oWndTimer ;   //   MAXIMIZED ;   ON INIT oLBmnda:Set( AMPAarra[1][2][5][3] ) ;
                VALID ( If( AMPAarra[4][1], oTimer1:End(), Nil ), AMPAarra[4][1] ) ;
                ON INIT oWndTimer:Hide()
Pués resulta que el "ON INIT oWndTimer:Hide()" del ACTIVATE ha dejado de no funcionar.

Para resolverlo, lo he elimindado del "ON INIT" y lo he puesto después así (desvinculado del ACTIVATE):

Code: Select all | Expand

SysRefresh()    // Por si acaso.
oWndTimer:Hide()
Es un mal menor dependiendo de cuantos :Hide() de MDICHILD se tengan en la aplicación.

Ya dirás,

Un Saludo
Carlos G.

FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

User avatar
ertan
Posts: 61
Joined: Wed Jul 26, 2023 12:08 pm
Location: Istanbul, Turkiye

Re: MDICHILD y :Hide() -- Problema en FWH 25.06

Post by ertan »

Hi Carlos,

You don't need call :Hide() method for TWindow() or TMDIFrame() or TMDiChild()
After window define, auto call oWnd:Hide() from TWindow() in :New() method
oWnd and aControls not showed until ACTIVATE WINDOW oWnd.

This changes build in FWH 25.04

Best regards,
Ertan,

User avatar
ertan
Posts: 61
Joined: Wed Jul 26, 2023 12:08 pm
Location: Istanbul, Turkiye

Re: MDICHILD y :Hide() -- Problema en FWH 25.06

Post by ertan »

Hi again,

We need to use this method( autohide ) for TDialog.

::bInit executed before oWnd:Activate and we need new variable ::bStart for executed after oWnd:Activate

in progress. Build in next FWH release.

Best regards,
Ertan,

User avatar
Antonio Linares
Site Admin
Posts: 44515
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: MDICHILD y :Hide() -- Problema en FWH 25.06

Post by Antonio Linares »

Estimado Carlos,

Este ejemplo creo que sirve para entender lo que comentas:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oWnd, oWndChild

   DEFINE WINDOW oWnd MDI 

   DEFINE WINDOW oWndChild MDICHILD NOZOOM 

   // ACTIVATE WINDOW oWndChild ON INIT oWndChild:Hide()

   oWndChild:Hide()

   ACTIVATE WINDOW oWnd 

return nil
Vamos a revisar por que el ON INIT desde ACTIVATE de la ventana child no se ejecuta
regards, saludos

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

Re: MDICHILD y :Hide() -- Problema en FWH 25.06

Post by Antonio Linares »

Si revisas Class TWindow Method Activate() verás que bInit se evalúa ANTES de que se muestre la ventana.

Se puede comprobar así:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oWnd, oWndChild

   DEFINE WINDOW oWnd MDI 

   DEFINE WINDOW oWndChild MDICHILD NOZOOM 

   ACTIVATE WINDOW oWndChild ON INIT MsgInfo( IsWindowVisible( oWndChild:hWnd ) )
   
   ACTIVATE WINDOW oWnd 

return nil
Por lo que tiene sentido que el mensaje Hide() no funcione ya que la ventana aún no está visible.

Lo que no entiendo es por que te funcionaba antes...
regards, saludos

Antonio Linares
www.fivetechsoft.com
FiveWiDi
Posts: 1467
Joined: Mon Oct 10, 2005 2:38 pm

Re: MDICHILD y :Hide() -- Problema en FWH 25.06

Post by FiveWiDi »

Antonio Linares wrote: Sun Aug 17, 2025 7:16 am Estimado Carlos,

Este ejemplo creo que sirve para entender lo que comentas:

Code: Select all | Expand

#include "FiveWin.ch"

function Main()

   local oWnd, oWndChild

   DEFINE WINDOW oWnd MDI 

   DEFINE WINDOW oWndChild MDICHILD NOZOOM 

   // ACTIVATE WINDOW oWndChild ON INIT oWndChild:Hide()

   oWndChild:Hide()

   ACTIVATE WINDOW oWnd 

return nil
Vamos a revisar por que el ON INIT desde ACTIVATE de la ventana child no se ejecuta
No exactamente.

El "ON INIT" se ejecuta (tengo otras acciones en el "ON INIT" que sí se realizan), pero el :Hide() no oculta la MDICHILD.

De momento lo tengo resuelto así:

Code: Select all | Expand

   DEFINE WINDOW oWnd MDI 

   DEFINE WINDOW oWndChild MDICHILD NOZOOM 

   //ACTIVATE WINDOW oWndChild ON INIT oWndChild:Hide()

   //oWndChild:Hide()

   ACTIVATE WINDOW oWnd 

   oWndChild:Hide()

Un Saludo
Carlos G.

FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

User avatar
Antonio Linares
Site Admin
Posts: 44515
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: MDICHILD y :Hide() -- Problema en FWH 25.06

Post by Antonio Linares »

regards, saludos

Antonio Linares
www.fivetechsoft.com
FiveWiDi
Posts: 1467
Joined: Mon Oct 10, 2005 2:38 pm

Re: MDICHILD y :Hide() -- Problema en FWH 25.06

Post by FiveWiDi »

Antonio Linares wrote: Mon Aug 18, 2025 9:47 am viewtopic.php?p=281055#p281055
Gracias Antonio,

No abía caído en mirar el código de la Window.

Un Saludo
Carlos G.

FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Post Reply