Page 1 of 1

Focus en window MDICHILD

Posted: Fri Jan 31, 2025 6:58 am
by FiveWiDi
Hola a todos,

¿Cómo puedo saber si una de las window MDICHILD tiene el foco?

Gracias,

Re: Focus en window MDICHILD

Posted: Fri Jan 31, 2025 7:36 am
by Antonio Linares
Carlos,

buenos dias

Prueba con oWndChild:hWnd == GetFocus()

Tambien podrias usar oWndChild:bGotFocus = { || MsgBeep() } y oWndChild:bLostFocus = { || MsgBeep() }

Puedes usar OutputDebugString( "foco recibido" ) y dbwin32 en vez de MsgBeep(). Si usas MsgInfo() alteraras la secuencia de foco

Re: Focus en window MDICHILD

Posted: Fri Jan 31, 2025 9:51 am
by JESUS MARIN
Buenos dias
En mi entorno de pruebas, MdiChildFolder, creé una función que me muestra todas las ventanas MdiChild y me marca la que está activa.


Image

Por lo tanto deberia ser sencillo resolverlo. Te copio el código de esta función

Code: Select all | Expand

//--------------------------------------------------------------------------
METHOD MenuFolders( oButton, nRow, nCol ) CLASS TMdiChildFolder


LOCAL aVentanasMdi:=::Genera_botones_mdi()
LOCAL I:=1
local oMenu
LOCAL nRowMenu:=oButton:nTop+oButton:oWnd:nTop+oButton:nHeight
LOCAL nColMenu:=oButton:nLeft

MENU oMenu POPUP
   FOR I=1 TO LEN(aVentanasMdi)
      IF aVentanasMdi[i]==Self:cCaption
         MENUITEM aVentanasMdi[i] OF oMenu CHECKED
      ELSE
         MENUITEM aVentanasMdi[i] OF oMenu
      ENDIF
   NEXT I
ENDMENU

FOR I=1 TO LEN(aVentanasMdi)
   oMenu:aItems[i]:bAction := HazBlock(i)
NEXT I

oMenu:Activate( nRowMenu,nColMenu, Self , .f. )

RETURN(NIL)

//-----------------------------------------------------------------------------

Re: Focus en window MDICHILD

Posted: Fri Jan 31, 2025 9:45 pm
by FiveWiDi
Muchas gracias Jesus,

Estoy buscando algo que no precise código, alguna DATA.

Supongo que si la clase tiene alguna DATA que al tomar el foco le da .T. y cuando lo pierde le da .F. sería lo ideal.

Re: Focus en window MDICHILD

Posted: Fri Jan 31, 2025 10:05 pm
by Antonio Linares
Carlos,

oWndChild:lFocused

Re: Focus en window MDICHILD

Posted: Fri Jan 31, 2025 10:06 pm
by Antonio Linares
JESUS MARIN wrote: Fri Jan 31, 2025 9:51 am Buenos dias
En mi entorno de pruebas, MdiChildFolder, creé una función que me muestra todas las ventanas MdiChild y me marca la que está activa.


Image

Por lo tanto deberia ser sencillo resolverlo. Te copio el código de esta función

Code: Select all | Expand

//--------------------------------------------------------------------------
METHOD MenuFolders( oButton, nRow, nCol ) CLASS TMdiChildFolder


LOCAL aVentanasMdi:=::Genera_botones_mdi()
LOCAL I:=1
local oMenu
LOCAL nRowMenu:=oButton:nTop+oButton:oWnd:nTop+oButton:nHeight
LOCAL nColMenu:=oButton:nLeft

MENU oMenu POPUP
   FOR I=1 TO LEN(aVentanasMdi)
      IF aVentanasMdi[i]==Self:cCaption
         MENUITEM aVentanasMdi[i] OF oMenu CHECKED
      ELSE
         MENUITEM aVentanasMdi[i] OF oMenu
      ENDIF
   NEXT I
ENDMENU

FOR I=1 TO LEN(aVentanasMdi)
   oMenu:aItems[i]:bAction := HazBlock(i)
NEXT I

oMenu:Activate( nRowMenu,nColMenu, Self , .f. )

RETURN(NIL)

//-----------------------------------------------------------------------------
Jesús, muy bonito y profesional tu diseño.

Sería genial si compartieses un ejemplo para todos, gracias!

Re: Focus en window MDICHILD

Posted: Sat Feb 01, 2025 3:52 pm
by FranciscoA
Estoy buscando algo que no precise código, alguna DATA.

Carlos.
Cuando abres ventanas MDICHILD, en el elemento 2 del menu de la ventana principal se van mostrando las mdichilds abiertas y marcada la que tiene el foco. No sé si es lo que buscas. ( MENUINFO 2 )

Saludos.

Re: Focus en window MDICHILD

Posted: Sun Feb 02, 2025 9:34 am
by JESUS MARIN
Querido Antonio
Por mi parte, encantado de ceder todo el códdigo.
Solo dime cómo hacerlo.
Saludos
Jesús Marín
Antonio Linares wrote: Fri Jan 31, 2025 10:06 pm
JESUS MARIN wrote: Fri Jan 31, 2025 9:51 am Buenos dias
En mi entorno de pruebas, MdiChildFolder, creé una función que me muestra todas las ventanas MdiChild y me marca la que está activa.


Image

Por lo tanto deberia ser sencillo resolverlo. Te copio el código de esta función

Code: Select all | Expand

//--------------------------------------------------------------------------
METHOD MenuFolders( oButton, nRow, nCol ) CLASS TMdiChildFolder


LOCAL aVentanasMdi:=::Genera_botones_mdi()
LOCAL I:=1
local oMenu
LOCAL nRowMenu:=oButton:nTop+oButton:oWnd:nTop+oButton:nHeight
LOCAL nColMenu:=oButton:nLeft

MENU oMenu POPUP
   FOR I=1 TO LEN(aVentanasMdi)
      IF aVentanasMdi[i]==Self:cCaption
         MENUITEM aVentanasMdi[i] OF oMenu CHECKED
      ELSE
         MENUITEM aVentanasMdi[i] OF oMenu
      ENDIF
   NEXT I
ENDMENU

FOR I=1 TO LEN(aVentanasMdi)
   oMenu:aItems[i]:bAction := HazBlock(i)
NEXT I

oMenu:Activate( nRowMenu,nColMenu, Self , .f. )

RETURN(NIL)

//-----------------------------------------------------------------------------
Jesús, muy bonito y profesional tu diseño.

Sería genial si compartieses un ejemplo para todos, gracias!

Re: Focus en window MDICHILD

Posted: Sun Feb 02, 2025 1:09 pm
by karinha
Jseus, Crea una cuenta aqui:

https://mega.nz

Regards, saludos.

Re: Focus en window MDICHILD

Posted: Sun Feb 02, 2025 4:10 pm
by Antonio Linares
Jesús,

Lo más sencillo es crear un repositorio gratuito en github, subir todo el código allí y compartir la URL del repositorio :)

https://github.com/

Gracias!