Anular Salida de dialog con scape

Anular Salida de dialog con scape

Postby Verhoven » Sun Aug 12, 2007 8:56 am

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

Saludos.
Verhoven
 
Posts: 518
Joined: Sun Oct 09, 2005 7:23 pm

Postby Antonio Linares » Sun Aug 12, 2007 9:06 am

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
Antonio Linares
Site Admin
 
Posts: 41948
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby metaldrummer » Sun Aug 12, 2007 4:45 pm

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  Expand view
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
metaldrummer
 
Posts: 113
Joined: Wed Jan 10, 2007 8:43 pm
Location: Coquimbo-Chile

Postby Armando » Sun Aug 12, 2007 7:33 pm

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

Postby antolin » Mon Aug 13, 2007 10:18 pm

Yo utilizo una pequeña funcion:

FUNCTION NoScape()
RETURN !( GetKeyStat( 27 ) )


La aplico así

ACTIVATE DIALOG oDlg VALID NoScape()

ó si necesito otra validación

ACTIVATE DIALOG oDlg VALID IF(NoScape(), <VALIDACION> ,.F.)

ó en una funcion:

ACTIVATE DIALOG oDlg VALID FuncionValidacion(...)

FUNCTION FuncionValidacion(...)
LOCAL lRet := NoScape()
IF lRet
...
...
lRet := .T. ó .F.
...
...
ENDIF
RETRUN lRet

Me va muy bien

Saludos
antolin
 
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 75 guests