Page 1 of 1

Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Tue Mar 17, 2015 4:12 am
by alexpdasilva
Hola a todos.

Lo siento por la traducción.

Tengo un problema serio cuando tengo dos GETS y uno necesita del otro validado con el fin de ejecutar la acción, haga clic en la segunda BMP no obedece al WHEN do GET. ¿Qué hacer para corregirlo?

sigue un tramo de código de prueba:

redefine Get oGet1 var cCodigo picture '99999' id 101 of oDlg_0051 valid( val_0051() ) action( Eval( bLista01 ) ) Bitmap "Lupa2" update
oGet1:lBtnTransparent := .t.
oGet1:bKeyDown := { | nKey | if( nKey = VK_F2, Eval( bLista01 ), NIL ) }
oGet1:cToolTip := 'Informe o número da Conta '
bLista01 := {|| cCodigo := ListaCC( cCodigo, oGet1 ) }

redefine Get oGet2 var cProduto picture '999' id 102 of oDlg_0051 valid( val_0051a() ) action( Eval( bLista02 ) ) Bitmap "Lupa2" update WHEN .f.
oGet2:lBtnTransparent := .t.
oGet2:bKeyDown := { | nKey | if( nKey = VK_F2, Eval( bLista02 ), NIL ) }
oGet2:cToolTip := 'Informe o número da Conta '
bLista02 := {|| cProduto := ListaProduto( cProduto, oGet2 ) }

En este caso, incluso con WHEN .F. clic desencadena la función.

qué hacer para hacer clic en el BMP respetar el WHEN de GET?

gracias a todos

Alexandre Pereira
Belo Horizonte/MG - Brasil

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Tue Mar 17, 2015 7:28 am
by Antonio Linares
Alexandre,

Que versión de FWH usas ?

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Tue Mar 17, 2015 1:58 pm
by alexpdasilva
Olá Antonio.

FWH 14.12.

Regards,

Alexandre Pereira

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Tue Mar 17, 2015 4:06 pm
by Antonio Linares
Prueba a añadir esto:

oGet2:oBtn:Disable()

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Wed Mar 18, 2015 3:18 am
by alexpdasilva
Gracias Antonio,

Pero hay muchos objetos y el programa es enorme, pensé que tal vez cambio el TGet pero estoy encontrando dificuldados porque BMP es otro objeto.

Simplemente no me hago el cambio en TGet sin comprometer el resto del sistema.

¿Tiene algún otro consejo?

Gracias,

Alexandre Pereira

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Wed Mar 18, 2015 7:44 am
by Antonio Linares
Alexandre,

La solución idónea entonces es definir el Método Disable() en la Clase TGet de esta forma:

METHOD Disable() INLINE ::Super:Disable(), ::oBtn:Disable()

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Wed Mar 18, 2015 3:57 pm
by alexpdasilva
Maestro,

La forma en que ha pasado dio error. Sin embargo, cambié el TGet y así lo hizo:

METHOD CreateButton() CLASS TGet
...
::oBtn:lCancel = .f. // Inicia FALSO para ser habilitado na GOTFOCUS (Alexandre Pereira)
...


METHOD LostFocus( hCtlFocus ) CLASS TGet
...
// Desabilitando quando sair
if ! Empty( ::oBtn )
::oBtn:lCancel := .f.
endif
...

METHOD GotFocus( hCtlLost ) CLASS TGet
...
if ! Empty( ::oBtn )
::oBtn:lCancel := .t.
endif
...


Ahora está trabajando de la manera correcta, respetando las VALIDSs otro GETS.


Cuando la modificación se incorpora en los nuevos FIVES retiro la TGET.PRG de mi proyecto.

Gracias por la atención.

Alexandre Pereira

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Wed Mar 18, 2015 4:09 pm
by Antonio Linares
Alexandre,

Pero la DATA lCancel no es para habilitar y deshabilitar un botón. lCancel se usa para que el botón se salte la validación del control en curso.

Es extraño que te funcione bien con eso.

Que error te dió el código que te sugerí ?

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Wed Mar 18, 2015 4:55 pm
by alexpdasilva
Antonio,

Realmente lCancel es despreciar la válida, sin embargo, esto afecta cuando el botón está dentro del GET. Así que estaba aceptando el clic y la realización de la acción y haciendo caso omiso de la otra valid de la GET (que debía ser validada). Como cambió no falla para validar el otro "GET" y trabaja estrechamente con el GET que está inmersa.


El formulario anterior el GET funcionaba perfecto, pero el CLICK sobre BITMAP ignorando Válidos otro GET.

En cuanto al error que dio en la declaración del método DISABLE:

...
Size: 7,224,320 bytes
Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20141106)
FiveWin Version: FWHX 14.12
Windows version: 6.1, Build 7600

Time from start: 0 hours 0 mins 0 secs
Error occurred at: 18/03/2015, 13:42:37
Error description: Error BASE/1004 Class: 'NIL' has no exported method: DISABLE

Args:
[ 1] = U

Stack Calls
===========
Called from: => DISABLE( 0 )
Called from: P:\Desenv\DeclaCRED\funcoes\tget.000 => (b)TGET:TGET( 148 )
Called from: => TGET:DISABLE( 0 )
Called from: .\source\classes\WINDOW.PRG => TDIALOG:AEVALWHEN( 2883 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:INITIATE( 708 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 890 )
Called from: => DIALOGBOX( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 286 )
Called from: P:\Desenv\DeclaCRED\DeclaCRED.prg => MAIN( 88 )


Una vez más, perdóname por la traducción.

Alexandre Pereira

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Wed Mar 18, 2015 7:52 pm
by Antonio Linares
Alexandre,

Pruébalo asi:

METHOD Disable() INLINE ::Super:Disable(), If( ::oBtn != nil, ::oBtn:Disable(),)

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Wed Mar 18, 2015 8:11 pm
by alexpdasilva
Maestro,

Aún aceptando haga clic en el BMP.

El problema está realmente en lCancel, se activa el botón para recibir el clic incondicionalmente.

Como lo hizo antes está la solución.

Gracias.

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Wed Mar 18, 2015 8:46 pm
by Antonio Linares
Alexandre,

Si te funciona bien, entonces perfecto :-)

gracias!

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Thu Mar 19, 2015 12:42 pm
by Antonio Linares
Alexandre,

Implementado para el próximo FWH 15.03

muchas gracias! :-)

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Fri Mar 20, 2015 6:28 pm
by alexpdasilva
Gracias Maestro.

Re: Haga clic en el BITMAP no obedece WHEN GET

PostPosted: Mon Mar 23, 2015 10:31 am
by Silvio.Falconi
Antonio,
a modify can be important to AutoGet Class
I wish insert a button on this type of Tget but it not run
then the user can use autoget fill data or press the button to lookup and select the data from file
I think this modify can be easy but I not Know How do it
is there some Gurus ?