FoxPro/Visual FoxPro - Diferencia entre LostFocus y Valid

   
Vista:

Diferencia entre LostFocus y Valid

Publicado por Juan (71 intervenciones) el 18/03/2015 10:27:55
Buenos días.

Alguien me puede decir la diferencia que hay entre LostFocus, GotFocus, Valid y When?

Cuál es mejor utilizar o que diferencias hay?

Un saludo.
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

Diferencia entre LostFocus y Valid

Publicado por Fidel José (558 intervenciones) el 18/03/2015 12:43:21
Eventos que se producen siempre que el objeto sea Enabled=.T. y aunque sea REadonly=.t.
When
GotFocus
*!* Espera acción del usuario
*!* Cuando se digita [Enter] [Tab] o se hace click en otro punto de la interfaz que pueda recibir enfoque (incluido los ControlBox) se producen los eventos Valid y LostFocus.

*!* Cuando se minimiza un form, también se producen Valid y LostFocus,
*!* solo que al volver al estado normal o maximizado, se repone el enfoque en el objeto que lo tenía al minimizarse.
Valid
LostFocus

When es un evento que se produce antes de que un objeto tome el foco.
Al igual que en Valid, no se puede usar SetFocus dentro del Evento When, ni de sus procesos dependientes.
Por ejemplo, se puede usar para asignar un valor por defecto. En este caso también ubica el cursor al final del valor contenido (textbox cadena)
1
2
3
4
5
6
7
8
9
10
11
12
this.Value=EVL(this.Value,"Algo")
this.SelStart=LEN(TRIM(this.Value))+1
 
*También se puede utilizar para impedir, en determinadas condiciones, que el objeto tome el enfoque:
IF NOT PEMSTATUS(thisform,"TalProp",5)
	RETURN .f.
ENDIF
* Es la única manera de evitar que un objeto Enabled=.t. tome el foco (gotFocus)
*  y ejecute luego Valid y LostFocus.
* Esto suele utilizarse en los controles grid, cuando queremos evitar
* que se enfoquen objetos de ciertas columnas.
* En este caso no se produce GotFocus y tampoco Valid y LostFocus.


GotFocus es un evento que se produce cuando el objeto toma el enfoque.

Valid es un evento que se produce antes de que un objeto pierda el foco y permite retener el foco o redirigirlo a otros objetos del form, en el caso de que el valor ingresado no sea aceptable.
No se permite utilizar SetFocus() dentro del Evento Valid (ni de cualquier procedure que se lance dentro del Evento Vali. Por ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
*Valid Event && TExtbox para ingreso de horas en formato Time() [solo para mostrar las posibilidades].
* Se suele incluir un flag para aviso
Addproperty(Thisform , "valida" , .F. )     && crea una propiedad en el form con valor False
DO CASE
	CASE EMPTY(CHRTRAN(this.Value,":0",""))
		RETURN thisform.text4
 
	CASE VAL(GETWORDNUM(this.Value,1,":")) > 12
		RETURN 0
	CASE VAL(GETWORDNUM(this.Value,2,":")) > 59
		RETURN -1
ENDCASE
Thisform.Valida=.T.       && si supera el CASE/ENDCASE la propiedad toma el valor True.

LostFocus es un evento que se produce cuando un objeto pierde el foco. Si hay código en el Evento Valid que envía el enfoque a otro objeto, debe tenerse en cuenta que se ejecuta el LostFocus.

1
2
3
IF thisform.Valida
	thisform.get_myfunc()    && ejecuta un procedimiento o un conjunto de instrucciones.
ENDIF

*!* Cuando se escribe algo en un cuadro de edición, se produce InteractiveChange. InteractiveChange también se produce en los controles Combobox, Listbox, Optiongroup y Commandgroup cuando se selecciona un elemento distinto del actual. Tener en cuenta que se produce en cada cambio.
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

Diferencia entre LostFocus y Valid

Publicado por Juan (71 intervenciones) el 18/03/2015 16:35:26
Muchas gracias.

Me puede explicar mejor que quiere decir y para que sirve PEMSTATUS?

Un saludo.
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

Diferencia entre LostFocus y Valid

Publicado por Fidel José (558 intervenciones) el 18/03/2015 23:24:53
En el caso utilizado estás preguntando si existe la propiedad "TalProp".
Tiene varias aplicaciones. Lo más común es preguntar si existe una propiedad, método u objeto, que corresponde al tercer parámetro = 5.

* Con este segmento digo:
* Si no existe la propiedad "Prop_Nueva" crear la propiedad con el valor lx_valor_de_la_Propiedad
IF !PEMSTATUS(thisform,"Prop_Nueva",5)
Addproperty(thisform,"Prop_nueva", lx_valor_de_la_Propiedad )
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