LostFocus es un evento que ocurre cuando un objeto enfocable pierde el enfoque.
Los controles Label no tienen GotFocus ni LostFocus porque no tienen enfoque.
LostFocus Applies To: CheckBox | ComboBox | CommandButton | Container Object | Control Object | EditBox | Form | ListBox | OLE Bound Control | OLE Container Control | OptionButton | Spinner | TextBox
El enfoque se pierde por:
1) Tecla Tab
2) Tecla Enter
3) Click sobre otro control enfocable.
4) Llamada a otro formulario con objetos enfocables desde un evento del control enfocado (Click, DblClick, Keypress, Valid, etc.)
5) La instrucción Objeto.SetFocus() enviada desde algun evento del control enfocado (excepto When y Valid que no la soportan).
Para que un objeto enfocable reciba el foco, debe tener su propiedad Enabled = .T.
Básicamente, los eventos en un control enfocable (salvo Form y Container) son los siguientes:
Al enviar el enfoque a un control enfocable (Enabled = .T.)
1) When
2) GotFocus
Al escribir algo en el control (si admite escitura)
KeyPress
InteractiveChange
Al hacer click sobre el control, Click(), Si es doble Click DblClick()
Al presionar TAb, Enter o enfocar con el mouse otro control:
Valid
LostFocus
Para programar cualquier interfaz, lo primero que necesitas conocer es el orden en que se suceden los eventos y cuándo es posible que sucedan.
En este ejemplo se busca un producto en una tabla de productos, ingresando el código de producto.
En el evento Valid se determina si el código buscado está en la tabla. Si no lo encuentra, regresa el foco y no ejecuta el LostFocus.
En el evento LostFocus (si el valor del control no es Empty(), busca el registro y actualiza otros controles. Si es Empty() no hace nada.