Anular Salida de dialog con scape

Post Reply
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Anular Salida de dialog con scape

Post by Verhoven »

¿Como se anula que se cierre una ventana de un dialogo con escape?

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

Post 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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
metaldrummer
Posts: 113
Joined: Wed Jan 10, 2007 8:43 pm
Location: Coquimbo-Chile
Contact:

Post 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
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Post by Armando »

Otra opción para evitar la tecla ESC sería

ACTIVATE DIALOG oDlg NOWAIT CENTERED VALID ! GetAsyncKey(VK_ESCAPE)

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
antolin
Posts: 475
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Post 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
Post Reply