ON CHANGE de GET active BUTTON

ON CHANGE de GET active BUTTON

Postby fusion » Thu Apr 30, 2009 2:44 pm

Saludos,

Tengo la siguiente situacion...
LOCA cId:= SPAC(10), cPassword:= SPAC(10)...

@ 74,180 GET cId PIXEL ON CHANGE oBtn:Refresh()
@ 85,180 GET cPassword PASSWORD PIXEL ON CHANGE oBtn:Refresh()
@ 102, 85 BUTTON oBtn PROMPT '&Ingresar' WHEN ( !EMPTY( cId ) .AND. !EMPTY( cPassword ) ) ACTION ( ValidInfo( cId, cPassword ) )
...

Sucede que el boton oBtn inicia desactivado porque cId y cPassword estan vacios, pero se escribe en cId y se empieza a escribir en cPassword y no he podido hacer que se active o desactive oBtn a medida que va cambiando cPassword o cId, he probado cambiando el ON CHANGE de los GET por ( oBtn:Refresh(), .T. ), ( oDlg:Refresh(), .T. ), ( SysRefresh(), .T. ), etc... y nada.... solo se activa oBtn cuando el GET bien sea de cId o cPassword pierden el foco, por lo tanto mi consulta es...

QUE DEBO PONER EN EL ON CHANGE DEL GET PARA QUE VAYA ACTUALIZANDO LA INFORMACION DEL BUTTON ?

Gracias por sus aportes...
Saludos / Greetings
Jair A. Linares
FWH 13.07/ Harbour 3.2.0 dev (r1306132159)/ Borland C++ 5.82 / UEStudio 9.20/ Help&Manual 5
jair.linares71@gmail.com
User avatar
fusion
 
Posts: 17
Joined: Wed Apr 15, 2009 5:41 pm
Location: Cali, Colombia, Sur america

Re: ON CHANGE de GET active BUTTON

Postby vlmsoft » Thu Apr 30, 2009 3:43 pm

Hola Jair,

Prueba con oBtn:Enable().

En el siguiente ejemplo se activa el boton cuando se ha validado el password:

.....
@ 74,180 GET cID PIXEL VALID TuFuncionValidID(...)
@ 85,180 GET cPassword PIXEL VALID IF( TuFuncionValidPassword(...),oBtn:Enable(),MsgInfo("Error en password") )
.....

Un saludo.
vlmsoft
 
Posts: 36
Joined: Thu Jun 28, 2007 3:43 pm
Location: Madrid

Re: ON CHANGE de GET active BUTTON

Postby fusion » Thu Apr 30, 2009 4:57 pm

Gracias por tu aporte,

efectivamente el oBtn:enable() activa el boton, pero no es la idea a la que quiero llegar...

Imagina que tienes un GET en el que el usuario va escribiendo y necesitas que un boton, un say, o cualquier control muestre, actue, se active, etc... en medida de los cambios que vayan sucediendo en el get sin abandonarlo...

Hay algo que sucede cuando el GET pierde el foco, que evalua el WHEN del boton y lo activa, ese algo es lo que quiero hacer para activar el boton del ejemplo...

(He estado probando algo con oBtn:aEvalWhen(), oDlg:aEvalWhen(), pero aun no he podido) seguire intentando y esperando sus aportes

Gracias de nuevo,
Saludos / Greetings
Jair A. Linares
FWH 13.07/ Harbour 3.2.0 dev (r1306132159)/ Borland C++ 5.82 / UEStudio 9.20/ Help&Manual 5
jair.linares71@gmail.com
User avatar
fusion
 
Posts: 17
Joined: Wed Apr 15, 2009 5:41 pm
Location: Cali, Colombia, Sur america

Re: ON CHANGE de GET active BUTTON

Postby Willi Quintana » Thu Apr 30, 2009 5:34 pm

Hazlo asi:
REDEFINE BTNGET oBusGlob ;
VAR cBusGlob ;
ON CHANGE (oBusGlob:Assign(), ; // actualiza el buffer a la variable propia
EVAL(XXX), oBotonx:Enable(), oNoseQue:Show()........... ) // lego del Assign pones lo que desees o evaluas el valor de la variable....

Salu2
User avatar
Willi Quintana
 
Posts: 1020
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: ON CHANGE de GET active BUTTON

Postby Willi Quintana » Thu Apr 30, 2009 5:38 pm

O tomando tu ejemplo

oBtn:Disable()
@ 74,180 GET cId PIXEL ON CHANGE (oBtn:Assign(), oBtn:Enable(), oBtn:Refresh() )
@ 85,180 GET cPassword PASSWORD PIXEL ON CHANGE (oBtn:Assign(), oBtn:Enable(), oBtn:Refresh() )
@ 102, 85 BUTTON oBtn PROMPT '&Ingresar' WHEN ( !EMPTY( cId ) .AND. !EMPTY( cPassword ) ) ACTION ( ValidInfo( cId, cPassword ) )
...

Salu2
User avatar
Willi Quintana
 
Posts: 1020
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: ON CHANGE de GET active BUTTON

Postby fusion » Thu Apr 30, 2009 6:20 pm

Saludos Willy y muchas gracias por tu contribucion...

Pero lamento decirte que no existe el metodo que mencionas para los botones... oBtn:Assign() me salio el error (Error description: Warning BASE/1004 Message not found: TBUTTON:ASSIGN)

He estado probando con...

@ 85,180 GET cPassword OF oDlg PIXEL PASSWORD ON CHANGE ( oBtn:aEvalWhen(), oDlg:aEvalWhen(), UpdateWindow(), MsgInfo( 'Probando' ) )

funciona, siempre y cuando no le quite el MsgInfo(), y lo otro que tiene malo es que activa el boton al digitar el segundo caracter, y si el usuario borra con la tecla Retroceder [BackSpace], cuando borra el primer caracter sigue activo el boton, tienen que presionar otro Retroceder para que vuelva a inactivarse el boton...

Bueno, seguire investigando y en espera de sus aportes.

Gracias de nuevo
Saludos / Greetings
Jair A. Linares
FWH 13.07/ Harbour 3.2.0 dev (r1306132159)/ Borland C++ 5.82 / UEStudio 9.20/ Help&Manual 5
jair.linares71@gmail.com
User avatar
fusion
 
Posts: 17
Joined: Wed Apr 15, 2009 5:41 pm
Location: Cali, Colombia, Sur america

Re: ON CHANGE de GET active BUTTON

Postby QAZWSX2K » Thu Apr 30, 2009 7:02 pm

YO QUE TU LE QUITARA ENTONCES EL MSGINFO Y LE PUSIERA UN SYSREFRESH()
Software especializado para oficinas contables con grandes volumenes de Informacion
Impresion de todos los formularios del Seniat, Dian

alex_patino74@hotmail.com
whatsapp 57+3214777217
User avatar
QAZWSX2K
 
Posts: 364
Joined: Tue Oct 25, 2005 7:06 pm
Location: Bogota - Caracas

Re: ON CHANGE de GET active BUTTON

Postby ADBLANCO » Thu Apr 30, 2009 7:55 pm

prueba con:

oDlg:AEvalWhen() // evaluar los when en un dialogo
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Re: ON CHANGE de GET active BUTTON

Postby Willi Quintana » Thu Apr 30, 2009 7:56 pm

UPs,, tienes razon,,, deberia ir asi:

oBtn:Disable()
@ 74,180 GET oGetx VAR cId PIXEL
@ 85,180 GET oPass VAR cPassword PASSWORD PIXEL ON CHANGE (oPass:Assign(), If(cld = xxx .AND. cPasword = yyy, oBtn:Enable(), oBtn:DIsable()), oBtn:Refresh() )
@ 102, 85 BUTTON oBtn PROMPT '&Ingresar' WHEN ( !EMPTY( cId ) .AND. !EMPTY( cPassword ) ) ACTION ( ValidInfo( cId, cPassword ) )

esto activaria el boton "ingresar" si se cumple la igualdad de las variables con xxx y con yyy

Salu2
User avatar
Willi Quintana
 
Posts: 1020
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: ON CHANGE de GET active BUTTON

Postby fusion » Thu Apr 30, 2009 8:08 pm

QAZWSX2K wrote:YO QUE TU LE QUITARA ENTONCES EL MSGINFO Y LE PUSIERA UN SYSREFRESH()


Ya lo habia probado de esta manera y no funciona... (Con SysRefresh() )

@ 85,180 GET cPassword OF oDlg PIXEL PASSWORD ON CHANGE ( oBtn:aEvalWhen(), oDlg:aEvalWhen(), SysRefresh() )

Pero si lo hago de esta manera...

@ 85,180 GET cPassword OF oDlg PIXEL PASSWORD ON CHANGE ( oBtn:aEvalWhen(), oDlg:aEvalWhen(), SysRefresh(), MsgInfo( ''Probando ) )

le pongo el MsgInfo() para verificar que se esta ejecutando el ON CHANGE, eso causa una salida y entrada al GET y ahi si actualiza el estado del boton... osea evalua oBtn:aEvalWhen() y oDlg:aEvalWhen()...

Gracias... y sigo probando y en espera de sugerencias...
Saludos / Greetings
Jair A. Linares
FWH 13.07/ Harbour 3.2.0 dev (r1306132159)/ Borland C++ 5.82 / UEStudio 9.20/ Help&Manual 5
jair.linares71@gmail.com
User avatar
fusion
 
Posts: 17
Joined: Wed Apr 15, 2009 5:41 pm
Location: Cali, Colombia, Sur america

Re: ON CHANGE de GET active BUTTON

Postby fusion » Thu Apr 30, 2009 8:14 pm

ADBLANCO wrote:prueba con:

oDlg:AEvalWhen() // evaluar los when en un dialogo


Gracias por tu aporte, pero ya lo habia probado... el ultimo codigo que puse que funciona con problemas es...

@ 85,180 GET cPassword OF oDlg PIXEL PASSWORD ON CHANGE ( oBtn:aEvalWhen(), oDlg:aEvalWhen(), UpdateWindow(), MsgInfo( 'Probando' ) )

El UpdateWindow() lo he cambiado por SysRefresh() y no trabaja sino pongo el MsgInfo() de prueba para verificar la ejecucion del ON CHANGE del GET...

Ojala Antonio nos de una manito...

Gracias...
Saludos / Greetings
Jair A. Linares
FWH 13.07/ Harbour 3.2.0 dev (r1306132159)/ Borland C++ 5.82 / UEStudio 9.20/ Help&Manual 5
jair.linares71@gmail.com
User avatar
fusion
 
Posts: 17
Joined: Wed Apr 15, 2009 5:41 pm
Location: Cali, Colombia, Sur america

Re: ON CHANGE de GET active BUTTON

Postby Daniel Garcia-Gil » Fri May 01, 2009 2:43 am

Saludos...

Si logro entender tu problema, puedes intentar esto


Code: Select all  Expand view  RUN
#include "fivewin.ch"

function main()
  local oDlg
  local cId := space( 10 )
  local cPass := space( 10 )
  local oBtn
   
  define dialog oDlg pixel size 400,400
 
  @ 01,01 Get oGetx var cId pixel of oDlg
  @ 20,01 Get oGetP var cPass Password pixel of oDlg ;
  on change( if( empty( oGetP:oGet:Buffer ), oBtn:Disable(), oBtn:Enable() ) )
  @ 40,01 button oBtn prompt "OK" of oDlg pixel
 
  oBtn:Disable()
 
  activate dialog oDlg
 
return nil
 
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Enrico Maria Giordano, Google [Bot] and 38 guests