combobox y tecla Escape

combobox y tecla Escape

Postby Manuel Valdenebro » Wed Mar 08, 2006 5:45 pm

Tengo un dialogo, con varios combobox y Get. El dialogo se activa con la clausula VALID: ACTIVATE DIALOG oDlg VALID (!lGrabar)

Cuando estoy en el segundo COMBO si puso la tecla Escape no hace nada (la variable lGranar := .f.). En cambio si despliego el combobox si reacciona.

Esta la claúsula para que salte:

oDlg:bKeyDown:={|nK| IIF ( nK != VK_ESCAPE, , ;
( NOSALIR(oDlg, lGrabar, oDbf), ;
lGrabar:=.f., oDlg:End() ) ) }


Cuando le quito la clausula VALID del ACTIVATE funciona tambien.

¿Hay alguna manera de que responda a ESCAPE el combo, sin estar desplegado?

Un saludo y gracias

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Postby Antonio Linares » Fri Mar 10, 2006 9:09 am

Manuel,

Puedes probar samples\combos.prg y confirmarnos si te ocurre igual ? Aqui funciona bien con el build de Marzo.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42120
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Manuel Valdenebro » Fri Mar 10, 2006 4:58 pm

Antonio, te acompaño el código de combos.prg con algunas modificaciones señaladas con negrita. En el ejemplo, si cambio el combo
segundo, y pulso <Escape>, debe salir el mensaje "¿Desea guardar los cambios?". Pues igual que en mi aplicación, si modifico y despliego el combo segundo, es correcto, pero si no está desplegado el combo segundo (y lo he modificado previamente) el programa no responde a la tecla <Escape>, se queda como muerto.
Si le quito el Valid del Activate, funciona.- Pero yo necesito el valid porque
no quiero que salga del dialogo hasta contestar si "Quiero modificar o no".
Con los Get funciona perfectamente, pero al meterle un Combo, falla.


#include "FiveWin.ch"
#include "Combos.ch"

//----------------------------------------------------------------------------//

function Main()

local oDlg, oSay
local oCbx1, oCbx2, oCbx3
local cItem1, cItem2 := "One", cItem3, cItem4 := "None"
local lGrabar := .f.

SET _3DLOOK ON

DEFINE DIALOG oDlg RESOURCE "Combos"

REDEFINE COMBOBOX oCbx1 VAR cItem1 ITEMS { "One", "Two", "Three" } ;
ID ID_SIMPLE OF oDlg ;
ON CHANGE ( cItem4 := cItem1, oSay:Refresh() ) ;
VALID ( cItem4 := cItem1, oSay:Refresh(), .t. )

REDEFINE COMBOBOX oCbx2 VAR cItem2 ITEMS { "One", "Two", "Three" } ;
ID ID_DROPDOWN OF oDlg ;
STYLE CBS_DROPDOWN ;
ON CHANGE ( cItem4 := cItem2, lGrabar := .t., oSay:Refresh() ) ;
VALID ( If( ! oCbx2:Find( oCbx2:oGet:GetText() ),;
oCbx2:Add( oCbx2:oGet:GetText() ),), .t. )

REDEFINE COMBOBOX oCbx3 VAR cItem3 ITEMS { "One", "Two", "Three" } ;
ID ID_DROPDOWNLIST OF oDlg ;
ON CHANGE ( cItem4 := cItem3, oSay:Refresh() ) ;
VALID ( cItem4 := cItem3, oSay:Refresh(), .t. )

REDEFINE SAY oSay PROMPT cItem4 ID ID_SELECTION OF oDlg COLOR "R+/W"

oDlg:bKeyDown:={|nK| IIF ( nK != VK_ESCAPE, , ;
( alert ("¿Desea guardar los cambios?"), ;
lGrabar:=.f., oDlg:End() ) ) }


// ACTIVATE DIALOG oDlg CENTERED
ACTIVATE DIALOG oDlg VALID(!lGrabar) ;
ON INIT (oDlg:lHelpIcon:=.f., .F.)

return nil

//----------------------------------------------------------------------------//

procedure AppSys

return

//----------------------------------------------------------------------------//


Como siempre, muchas gracias por tu ayuda.

Un saludo desde Málaga

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España

Postby Antonio Linares » Fri Mar 10, 2006 5:56 pm

Manuel,

Gracias por el ejemplo.

La pregunta que le haces al usuario en bKeyDown, debes hacérsela en el VALID:
Code: Select all  Expand view  RUN
ACTIVATE DIALOG oDlg ;
   VALID If( MsgYesNo( "¿Quiere guardar los cambios?" ), ( ..., .t.), .f. )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42120
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Manuel Valdenebro » Fri Mar 10, 2006 7:54 pm

Antonio,

Ha funcionado perfectamente. Muchisimas gracias.

Un saludo desde Málaga

Manuel
User avatar
Manuel Valdenebro
 
Posts: 706
Joined: Thu Oct 06, 2005 9:57 pm
Location: Málaga-España


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 10 guests