Problema con bLostFocus

Postby RenOmaS » Wed Oct 08, 2008 9:51 am

Puedes hacer mas o menos algo asi

Code: Select all  Expand view
Local lFocus := .F.

REDEFINE GET oGet VAR ........
oGet:bGotFocus := { || lFocus := .T. }
oGet:bLostFocus := { |o,h| If( h == oBtn:hWnd, , ; //tomo el foco el btn
                               lFocus := .F. ) }

REDEFINE BUTTON oBtn ID .... OF oDlg ;
                ACTION ......, oGet:SetFocus() ;
                WHEN lFocus


Saludos/regards
RenOmaS

skype: americo.balboa
User avatar
RenOmaS
 
Posts: 205
Joined: Fri Oct 07, 2005 5:07 pm

Postby triumvirato » Wed Oct 08, 2008 11:16 am

RenOmaS wrote:Puedes hacer mas o menos algo asi

Code: Select all  Expand view
Local lFocus := .F.

REDEFINE GET oGet VAR ........
oGet:bGotFocus := { || lFocus := .T. }
oGet:bLostFocus := { |o,h| If( h == oBtn:hWnd, , ; //tomo el foco el btn
                               lFocus := .F. ) }

REDEFINE BUTTON oBtn ID .... OF oDlg ;
                ACTION ......, oGet:SetFocus() ;
                WHEN lFocus




Gracias por tu ayuda, pero o algo no estoy entendiendo o no hago bien. El VALID del get sigue evaluando y por tanto no consigo realizar la acción del ACTION del botón... en cuanto el GET pierde el foco, evalúa el VALID y si no contiene un valor adecuado, no permite salir él (precisamente el ACTION del botón lo que hace es una búsqueda de esa valor adecuado)

Gracias!!!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Postby Armando » Wed Oct 08, 2008 12:24 pm

Triumvirato:

Si te interesa y gracias a José Murugosa en el siguiente link puedes encontrar la clase BtnGet32.

http://www.box.net/shared/lck9effuyn

Este es un ejemplo de cómo se ve.

Image


Si necesitas más ayuda me pegas un grito.

Saludos
Last edited by Armando on Sat Oct 11, 2008 12:24 pm, edited 2 times in total.
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: 3208
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Postby triumvirato » Wed Oct 08, 2008 2:05 pm

Armando wrote:Triumvirato:

Si te interesa y gracias al José Murugosa en el sisguiente link puedes encontrar la clase BtnGet32.

http://www.box.net/shared/lck9effuyn

Este es un ejemplo de cómo se ve.

Image


Si necesitas más ayuda me pegas un grito.

Saludos


Armando,

Muchas gracias por tu ayuda. Espero hacerlo funcionar, ya comentaré el resultado. Muchas muchas gracias!!!

Saludos!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Sigo con problemas!

Postby triumvirato » Fri Oct 10, 2008 10:39 am

Bien, sigo con el mismo problema, después de pruebas y pruebas tengo lo siguiente:

Code: Select all  Expand view
REDEFINE GET oGetArticulo VAR cArticulo ID 140 OF oDlg PICTURE '@!S12' UPDATE;
      ACTION Bus_Art( oDlg, oGetArticulo );
      BITMAP "basket.bmp";
      VALID ( Clave_Ok( "Art", cArticulo, 1 ) )

   oGetArticulo:bGotFocus := { || SetKey( VK_F2, { || Bus_Art( oDlg, oGetArticulo ) } ) }
   oGetArticulo:bLostFocus := { || SetKey( VK_F2, nil ) }


El botón del GET y el SetKey (tecla F2), hacen lo mismo, abren un diálogo de búsqueda, para encontrar el dato que ha de contener el GET. Por tanto, una vez situados en ese campo, si pulsamos F2 se abre un nuevo diálogo donde hacemos la búsqueda y este devuelve el valor seleccionado sin problemas.
El problema está, que cuando pulsamos el botón del Get que ha de hacer lo mismo, se evalúa la cláusula del VALID y como no contiene un valor correcto, está en blanco, no permite que se abra el nuevo diálogo para realizr la búsqueda del dato que ha de contener.
La función Clave_Ok devuelve .T. ó .F. y simplemente hace una búsqueda del valor introducido en una base de datos.
Lo curioso del caso, es que SetKey se salta el VALID sin problemas, mientras que el botón de búsqueda no lo hace.

Sugerencias??
Gracias!

Saludos!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Postby Daniel Garcia-Gil » Fri Oct 10, 2008 11:24 am

usa esto

oGetArticulo:lCancel = .T.
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Postby triumvirato » Fri Oct 10, 2008 3:49 pm

mcfox wrote:usa esto

oGetArticulo:lCancel = .T.


Gracias mcfox, había leído los hilos donde se trató el mismo tema:

http://67.222.39.232/forums/viewtopic.php?t=12832&highlight=get+boton
http://67.222.39.232/forums/viewtopic.php?t=12994&highlight=get+action

He hecho todas las pruebas que se me han ocurrido, poniendo oGetArticulo:lCancel = .T. ó
oGetArticulo:oBtn:lCancel = .T.
Tanto después del redefine del Get, como en la cláusula ON INIT del diálogo e incluso añadiéndo la línea que dice Antonio en el último post, pero no obtengo que no se avalúe el VALID de ese Get...
Sé que debo hacer algo mal... pero no doy con ello, además que en teoría debería bastar con haber modificado la clase, pero no se soluciona...

Gracias!

EDITO: Desde la cláusula ON INIT, FUNCIONA!!!! (estaba poniendo mal el nombre del Get) pero modificando la clase como indica Antonio en el último post del segundo hilo, no funciona.
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Postby Antonio Linares » Sat Oct 11, 2008 10:34 am

David,

En FWH 8.10 que publicaremos posiblemente este mismo fin de semana, el botón que usa el GET cuando se usa la claúsula ACTION ... ya tiene asignado la DATA lCancel como .T. para que no se dispare el VALID.
regards, saludos

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

Postby triumvirato » Sat Oct 11, 2008 10:37 am

Antonio Linares wrote:David,

En FWH 8.10 que publicaremos posiblemente este mismo fin de semana, el botón que usa el GET cuando se usa la claúsula ACTION ... ya tiene asignado la DATA lCancel como .T. para que no se dispare el VALID.


Antonio,

Agregué a la clase la línea que mencionabas en este hilo:

http://67.222.39.232/forums/viewtopic.php?t=12994&highlight=get+action

Y con eso no funcinó... lo comento por si es necesaria su revisión.

Gracias!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Postby Antonio Linares » Sat Oct 11, 2008 12:23 pm

David,

Este ejemplo aqui funciona bien con FWH 8.09 (estandard):
Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   local oDlg, oGet, cTest := Space( 20 )
   
   DEFINE DIALOG oDlg
   
   @ 2, 2 GET oGet VAR cTest ACTION MsgInfo( "action" ) VALID ( MsgInfo( "valid" ), .T. )
   
   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT oGet:oBtn:lCancel := .T.
   
return nil

La acción del botón no ejecuta el VALID
regards, saludos

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

Ok, así funciona, pero...

Postby triumvirato » Sun Oct 12, 2008 8:09 am

Antonio,

El código que has puesto ahí, a mí también me funciona correctamente, ahora bien, si quitamos la cláusula del ON INIT y habiendo modificado la clase como indicas, deja de funcionar:

Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   local oDlg, oGet, cTest := Space( 20 )
   
   DEFINE DIALOG oDlg
   
   @ 2, 2 GET oGet VAR cTest ACTION MsgInfo( "action" ) VALID ( MsgInfo( "valid" ), .T. )
   
   ACTIVATE DIALOG oDlg CENTERED
   
return nil


En este ejemplo, la primera vez que pulsas el botón, se ejecuta el VALID, si pulsas seguido otra vez, se ejecuta el ACTION porque tiene el foco el botón. Si pulsamos seguido de nuevo el botón, se vuelve a ejecutar el VALID y así alternativamente.
A lo que me refiero, es que con modificar la clase como comentaste en su día no es suficiente:
Antonio Linares wrote:Ruben,

Rectifico! :-) Ya lo habíamos arreglado para facilitar su uso.

Si está arreglado, y estará incluido en la versión 8.10. Hay que añadir esta línea aqui:
Code: Select all  Expand view
METHOD CreateButton() CLASS TGet

   ...
      ::oBtn:lCancel = .T. // so the GET VALID is not fired when the button is focused   
   endif   
   
return nil   


Espero haberme explicado mejor.

Saludos!
triumvirato
 
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Previous

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 19 guests