Page 1 of 1

Dialog No Modal

Posted: Wed Nov 07, 2007 7:39 am
by Frafive
Hola amigos

Se puede saber cuando un dialog NO MODAL se ha cerrado ?

La idea es poder ejecutar una funcion justo en el momento que se cierra ese dialog, el valid no me vale se dispara antes de que se cierre el dialog.



un saludo

Posted: Wed Nov 07, 2007 8:21 am
by Silvio
Yes,

Code: Select all

   IF oApp():oDlg != NIL
      IF oApp():nEdit > 0
         RETURN NIL
      ELSE
         oApp():oDlg:End()
         SysRefresh()
      ENDIF
   ENDIF

Saludos,

Posted: Wed Nov 07, 2007 8:29 am
by Antonio Linares
Gabriel,

IsWindow( oDlg:hWnd ) devolverá .F. cuando el handle ya no sea válido.

Igual puedes comprobarlo desde un timer, desde una opción del menú, desde un WHEN, etc.

Posted: Wed Nov 07, 2007 11:24 am
by Frafive
Gracias Antonio, he puesto este codigo dentro del metodo close de la clase tdialog:

if ValType( ::bClose ) == "B"
if ! IsWindow(::hWnd )
Eval( ::bClose, Self )
Endif
Endif

He creado una data nueva bClose y desde mi prg puede hacer lo siguiente : oDlg:bClose:={||cualquiercosa()}

Esta bien esto o me va dar algun tipo de problema ?



un saludo

Posted: Wed Nov 07, 2007 12:16 pm
by Antonio Linares
Gabriel,

Parece una buena solución.

Pruébalo y si no te da errores, pues podrías usarlo