Page 1 of 1

Como capturar objeto Dialog ativa?

Posted: Mon Sep 28, 2009 9:26 pm
by MGA
Sr. Antonio e amigos,

Como capturar o objeto da dialog que estiver ativa no momento?

Obrigado

Re: Como capturar objeto Dialog ativa?

Posted: Mon Sep 28, 2009 10:08 pm
by MGA
Sr. Antonio,
Direto na classe DIALOG.PRG, como passar o obj?

METHOD KeyDown( nKey, nFlags ) CLASS TDialog

if nKey == VK_ESCAPE

if ::oWnd == nil
::End()
else
if ::oWnd:ChildLevel( TMdiChild() ) != 0
::End()
else
if ::oWnd:ChildLevel( TDialog() ) != 0
::End()
#ifdef __HARBOUR__
elseif Upper( ::oWnd:ClassName() ) == "TMDIFRAME" // To avoid ESC being ignored
::End()
#endif
else
return Super:KeyDown( nKey, nFlags )
endif
endif
endif
// else
elseif nKey==VK_F12
sgtrad(::hWnd)

else

return Super:KeyDown( nKey, nFlags )
endif

return nil

Do jeito acima não funciona!

Re: Como capturar objeto Dialog ativa?

Posted: Tue Sep 29, 2009 1:31 pm
by MGA
Up!

Re: Como capturar objeto Dialog ativa?

Posted: Sat Oct 03, 2009 3:53 pm
by VPOZO
Prueba con esto:

oDlg:lFocused

debiera ser .T. cuando tiene el foco

me comentas por que no lo prove...

Saludos

Re: Como capturar objeto Dialog ativa?

Posted: Sat Oct 03, 2009 9:01 pm
by Antonio Linares
SGS,

Si lo que deseas es saber que control de un diálogo tiene foco, puedes usar:

Code: Select all

nAt = AScan( oDlg:aControls, { | o | o:lFocused } )
if nAt != 0
   MsgInfo( oDlg:aControls[ nAt ]:ClassName() )
   // MsgInfo( oDlg:aControls[ nAt ]:nId )
endif
 
Si lo que deseas es obtener el objeto diálogo que se corresponde a un determinado hWnd

Code: Select all

oDlgFromHwnd( hWnd )
 
Desde cualquier Método de la Clase TDialog, el objeto diálogo está accesible en "Self":

Code: Select all

elseif nKey==VK_F12
   sgtrad( Self ) // Self es oDlg
else