Problemas con Valid, MsgRun y button

Problemas con Valid, MsgRun y button

Postby fgondi » Thu Nov 29, 2007 8:58 pm

Hola gente,

En mi sistema tengo definido un valid de un get en el que algunas de las tareas que realiza las hace mostrando un msgrun en pantalla.

El problema viene cuando estando en ese get se intenta pulsar en alguno de los button que tengo definidos en el resto de la ventana.
Como al pulsar en el button el get pierde el foco ejecuta el valid y tras terminar y debido a que muestra varios msgrun ya no recuerda que se había pulsado el botón y ejecuta la acción del mismo.

El probado el mismo procedimiento quitando los msgrun y funciona sin problemas, por lo que esta claro que el problema lo tengo por el msgrun.

Alguien me puede ayudar?
Muchas gracias por vuestra atención
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Postby Antonio Linares » Thu Nov 29, 2007 9:42 pm

Fernando,

Entonces el problema es que no se ejecuta la acción del botón, si ?
regards, saludos

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

Postby Ruben D. Fernandez » Thu Nov 29, 2007 9:45 pm

Fernando:

Intenta colocarle la clausula CANCEL a los botones que
no deben ejecutar el valid del get.

Saludos.

Ruben Fernandez
Ruben D. Fernandez
 
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay

Postby fgondi » Fri Nov 30, 2007 10:17 am

Antonio,

Correcto, el problema es que no ejecuta la acción del botón.
Pero si quito los msgrun, osea hago las validaciones sin mensaje en pantalla, tras terminar si me ejecuta la acción del botón

Ruben,

No me gustaría tener que poner la clausa CANCEL, porque si me interesa que ejecute el valid.

Gracias por vuestras respuestas
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Postby ADBLANCO » Fri Nov 30, 2007 12:41 pm

Y, es necesario que sea en el valid ? , no te sirve en 'ON CHANGE'
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Postby fgondi » Fri Nov 30, 2007 3:47 pm

Hola ADBLANCO,

La validación debe hacerla aunque no cambie el contenido del get, por lo no que no puedo usar ON CHANGE

Gracias por tu respuesta.
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Postby Antonio Linares » Fri Nov 30, 2007 3:50 pm

Fernando,

Y ese Get puede pasarle el foco a otro control que no sea el botón ?

El botón se queda con el foco ?
regards, saludos

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

Postby fgondi » Fri Nov 30, 2007 6:39 pm

Antonio,

El get no pas el foco al botón. Hay una serie de get's en cadena y al intro el foco va cambiando de un get a otro, ejecutando el valid del get que abandona y pasando el foco al get nuevo, y eso funciona sin problemas.

En la misma ventana hay un boton que al pulsarlo con el ratón hace una determinada tarea. Pues bien cuando con el ratón pulsan en el boton ejecuta el valid del get donde se encontraba el foco y si este contiene mensajes msgrun, no realiza la tarea del boton. Ejecuta el valid y el foco vuelve al mismo get.
Si el get no contiene mensajes msgrun, ejecuta el valid y posteriormente a tarea enconmendada al action del boton que han pulsado con el ratón.

Gracias por vuestras respuestas, espero haberlo aclarado algo.
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Postby fgondi » Fri Nov 30, 2007 6:53 pm

Antonio,

Dentro de samples esta el prg dbf01.prg, bien pues para reproducirlo sólo hay que colocar un valid al primer get's que se visualiza:

Code: Select all  Expand view
      REDEFINE GET oDbf:First ID ID_NAME OF oDlg UPDATE ;
      MESSAGE "Please type here the first name of the customer" ;
      Valid ps_tt()

static func ps_tt()
local i, j := 1
msgrun('hola', 'hola', {|| i:= j +1} )
return .T.


De esta forma al entrar en la ventana el foco está en el primer get. Ahora intentamos pulsar con el ratón en botón "next" y la primera vez que se pulsa el botón no salta de registro.
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España

Postby Antonio Linares » Fri Nov 30, 2007 8:33 pm

Fernando,

Prueba así :-)
Code: Select all  Expand view
static func ps_tt()
local i, j := 1
local h := GetFocus()
msgrun('hola', 'hola', {|| i:= j +1} )
if GetClassName( h ) == "Button"
   PostMessage( h, FM_CLICK )
endif   
return .T.
regards, saludos

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

Postby fgondi » Mon Dec 03, 2007 7:24 am

Antonio,

Funciona perfectamente.

Muchas gracias por la respuesta.
Un saludo
Fernando González Diez
ALSIS Sistemas Informáticos
User avatar
fgondi
 
Posts: 694
Joined: Fri Oct 07, 2005 6:58 am
Location: Palencia, España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 37 guests