FoxPro/Visual FoxPro - SET FOCUS... NO SE EJECUTA DESDE VALID

 
Vista:

SET FOCUS... NO SE EJECUTA DESDE VALID

Publicado por Edin (75 intervenciones) el 15/11/2007 19:13:09
Hola a todos en el foro, hice un programa simple en donde tengo una tabla y una forma (Form), el objetivo del programa es buscar la información de un producto mediante el campo código (es decir el código de producto), en la forma he colocado un cuadro de texto en donde me pide el codigo de producto, una vez que lo haya ingresado, he escrito una rutina en el evento "Valid" para que despues de ingresar el codigo de producto y presionar la tecla enter busque el codigo, si lo encuentra entonce me da la información que quiero, pero si no lo encuentra me da un mensaje que ese codigo no existe pero asi mismo quiero que me limpie el mismo textbox donde ingreso el codigo y me lleve el cursor nuevamente a ese mismo textbox, pero me el error que "SetFocus" no se puede llamar del evento "Valid", cómo hago para que me funcione bien, grax por su ayuda,. Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SET FOCUS... NO SE EJECUTA DESDE VALID

Publicado por enrique (1041 intervenciones) el 15/11/2007 19:51:26
reemplaza el SetFocus por "return .f." (sin las comillas), esto no deja salir el foco del textbox hasta que se cumpla la condición verdadera
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SET FOCUS... NO SE EJECUTA DESDE VALID

Publicado por JorgeE (423 intervenciones) el 15/11/2007 20:25:06
Tambien lo puedes hacer en el WHEN del siguiente campo en la secuencia de focos, o bien lo puedes hacer en el KEYPRESS del mismo textbox
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:SET FOCUS... NO SE EJECUTA DESDE VALID

Publicado por neo (1604 intervenciones) el 15/11/2007 21:02:05
en vez de un Setfocus()

Mejor un:

Thisform.text_codigo.value=""
Return 0
Thisform.refresh


Suerte►
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:SET FOCUS... NO SE EJECUTA DESDE VALID

Publicado por neo (1604 intervenciones) el 15/11/2007 21:03:16
en vez de un Setfocus()

Mejor un:

Thisform.text_codigo.value=""
Return 0
Thisform.refresh


Suerte►
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SET FOCUS... NO SE EJECUTA DESDE VALID

Publicado por Plinio (7841 intervenciones) el 16/11/2007 02:38:27
IF !FOUND()
NODEFAULT &&No hace lo que tenia que hacer, es decir perder el foco
RETURN .T. &&Para que no sigua ejecutando codigo mas abajo

ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:SET FOCUS... NO SE EJECUTA DESDE VALID

Publicado por Ernesto Hernandez (4623 intervenciones) el 16/11/2007 02:40:02
te conviene crear un procedimiento y mandar a llamar el SetFocus dentro del Valid atra vez de PROCEDIMIEnto que tu crees
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SET FOCUS... NO SE EJECUTA DESDE VALID

Publicado por Edin (75 intervenciones) el 16/11/2007 15:35:03
La primera respuesta de Enrique me ha funcionado estupendamente, pero de igual manera, me gustaria saber como hago que despues de una validación idependientemente falsa o verdadera de un TextBox que coloque el foco en otro TextBox

USE PRODUCTO IN 0
.
.
.
-------------------------------------------------------------
txtcodigo----------------------------->Valid
------------------------------------------------------------
LOCATE FOR COD=CODIGO **CODIGO ES EL CAMPO EN LA TABLA
IF CODIGO=COD THEN
MESSAGEBOX("EL CODIGO FUE ENCONTRADO EXITOSAMENTE")
THISFORM.TEXTBOX3.SETFOCUS
ELSE
MESSAGEBOX("EL CODIGO NO FUE ENCONTRADO")
RETURN .F.
THISFORM.REFRESH
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SET FOCUS... NO SE EJECUTA DESDE VALID

Publicado por enrique (1041 intervenciones) el 16/11/2007 21:06:28
cuando encontras el código pones

RETURN +2

donde +2 es la cantidad de controles que avanza el cursor automaticamente.

Lamentablemente muchas funciones y metodos no se pueden ejecutar en el VALID por lo que te aconsejo usarlo lo menos posible.

Espero te sirva

Enrique
Buenos Aires
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar