Page 1 of 1
Anular Salida de dialog con scape
Posted: Sun Aug 12, 2007 8:56 am
by Verhoven
¿Como se anula que se cierre una ventana de un dialogo con escape?
Saludos.
Posted: Sun Aug 12, 2007 9:06 am
by Antonio Linares
lSalir = .F.
ACTIVATE DIALOG oDlg VALID lSalir
El diálogo no terminará con escape, ní intentándo cerrarlo, hasta que lSalir sea .T.
Posted: Sun Aug 12, 2007 4:45 pm
by metaldrummer
Antonio Linares wrote:lSalir = .F.
ACTIVATE DIALOG oDlg VALID lSalir
El diálogo no terminará con escape, ní intentándo cerrarlo, hasta que lSalir sea .T.
Está en lo correcto Antonio. Si te sirve te doy un pequeño ejemplo:
Code: Select all
DEFINE DIALOG oDlg RESOURCE "PRUEBA" OF oPadre
REDEFINE BUTTON ID 301 OF oDlg ACTION ( oDlg:bValid:={ || .T.}, oDlg:End()) ;
CANCEL
ACTIVATE DIALOG oDlg CENTER VALID .F.
Te explico: al utilizar "VALID .F." en el ACTIVATE DIALOG, estamos indicando que aunque presiones la tecla ESC o presiones la X del diálogo, éste no se cerrará. Lo importante es que te fijes en lo que hace el botón.
En este caso saqué esto de un dialogo que utilizo desde recursos y ese botón cuando se presiona me aseguro que cambie el valor de oDlg:bValid que fue definida en el VALID del ACTIVATE DIALOG a .T. y luego le doy con el oDlg:End() la orden de que se cierre el diálogo.
Y como dice mi muy querido amigo Vikthor: "listo el pollo"
Saludos
David Lagos S.
Coquimbo-Chile
Posted: Sun Aug 12, 2007 7:33 pm
by Armando
Otra opción para evitar la tecla ESC sería
ACTIVATE DIALOG oDlg NOWAIT CENTERED VALID ! GetAsyncKey(VK_ESCAPE)
Saludos
Posted: Mon Aug 13, 2007 10:18 pm
by antolin
Yo utilizo una pequeña funcion:
FUNCTION _()
RETURN !( GetKeyStat( 27 ) )
La aplico así
ACTIVATE DIALOG oDlg VALID _()
ó si necesito otra validación
ACTIVATE DIALOG oDlg VALID IF(_(), <VALIDACION> ,.F.)
ó en una funcion:
ACTIVATE DIALOG oDlg VALID FuncionValidacion(...)
FUNCTION FuncionValidacion(...)
LOCAL lRet := _()
IF lRet
...
...
lRet := .T. ó .F.
...
...
ENDIF
RETRUN lRet
Me va muy bien
Saludos