Referencia de Eventos A-Z

Esta pagina documenta cada evento disponible en HarbourBuilder. Los eventos son bloques de codigo asignados a propiedades del control que se invocan cuando se dispara el evento correspondiente a nivel del SO. Los eventos forman el nucleo del modelo de programacion reactiva de HarbourBuilder.

Como funcionan los eventos

Cada evento es una propiedad en un objeto de control. Asignas un bloque de codigo Harbour ({ || ... }) a él. Cuando el usuario interactua con el control, HarbourBuilder enruta el evento nativo del SO a traves del backend (Win32/Cocoa/GTK3) y evalua tu bloque de codigo.

Sintaxis de Asignacion de Eventos

Los eventos se asignan usando el operador de asignacion estandar de Harbour con un bloque de codigo:

--- Evento simple: mostrar un mensaje ---
oBtn:OnClick := { || MsgInfo( "¡Boton pulsado!" ) }

--- Evento llamando a una funcion ---
oBtn:OnClick := { || ProcesarClic( oBtn, oForm ) }

--- Evento con parametros (eventos de teclado) ---
oEdit:OnKeyDown := { | nKey, nFlags | ManejarTecla( nKey, nFlags ) }

--- Evento con coordenadas del raton ---
oPaintBox:OnMouseMove := { | nX, nY | RastrearRaton( nX, nY ) }

--- Bloque de codigo multi-sentencia ---
oBtn:OnClick := { || ;
   RegistrarAccion( "boton pulsado" ), ;
   MsgInfo( "¡Listo!" ), ;
   oForm:Close() ;
}
Eventos asignados por el disenador

En el Disenador de Formularios, selecciona un control, ve a la pestana Eventos en el Inspector de Objetos, y haz doble clic en un evento. El IDE genera el bloque de codigo y salta al editor de codigo.

Eventos del Raton

EventoParametrosControles DisponiblesDescripcion
OnClickningunoTodos los controles interactivosSe dispara cuando el usuario hace clic con el boton izquierdo del raton. Es el evento mas comunmente usado para botones, elementos de lista y nodos de arbol.
OnDblClickningunoTodos los controles interactivosSe dispara en un doble clic. Para controles de lista/cuadricula, esto a menudo desencadena una accion de "editar" o "abrir".
OnMouseDownnButton, nShiftState, nX, nYTodos los controles visualesSe dispara cuando se presiona cualquier boton del raton. nButton: 1=izquierdo, 2=derecho, 3=central.
OnMouseUpnButton, nShiftState, nX, nYTodos los controles visualesSe dispara cuando se suelta cualquier boton del raton. Util para completar arrastrar y soltar o medir duracion de clic.
OnMouseMovenX, nYTodos los controles visualesSe dispara continuamente mientras el raton se mueve sobre el control. Usar con moderacion; se dispara muy frecuentemente.
OnMouseWheelnDelta, nX, nYTodos los controles visualesSe dispara cuando se desplaza la rueda del raton. nDelta es positivo para desplazamiento adelante, negativo para atras.

Eventos del Teclado

EventoParametrosControles DisponiblesDescripcion
OnKeyDownnKey, nFlagsTodos los controles enfocablesSe dispara cuando se presiona una tecla. nKey es el codigo de tecla virtual (constantes VK_). Se dispara antes de que se procese el caracter.
OnKeyUpnKey, nFlagsTodos los controles enfocablesSe dispara cuando se suelta una tecla. Util para detectar cuanto tiempo se mantuvo una tecla.
OnKeyPresscKeyEdit, Memo, MaskEdit, ComboBoxSe dispara cuando se escribe un caracter. cKey es el caracter actual (no codigo virtual). Permite modificar o cancelar el caracter.

Eventos de Foco y Seleccion

EventoParametrosControles DisponiblesDescripcion
OnEnterningunoTodos los controles enfocablesSe dispara cuando el control recibe foco de entrada (via Tab, clic o programaticamente). Util para resaltar el campo activo.
OnExitningunoTodos los controles enfocablesSe dispara cuando el control pierde el foco. Usar para validacion: verifica el valor del campo y previene la perdida de foco retornando .F. si es invalido.
OnChangeningunoEdit, Memo, ComboBox, CheckBox, Radio, TrackBar, UpDownSe dispara cuando el valor del control cambia. Para controles de edicion, se dispara en cada pulsacion de tecla.

Eventos del Ciclo de Vida del Formulario

EventoParametrosControles DisponiblesDescripcion
OnCreateningunoFormSe dispara cuando el objeto formulario se crea por primera vez, antes de agregar controles. Usar para inicializacion temprana.
OnInitningunoFormSe dispara despues de crear todos los controles y el formulario esta a punto de mostrarse. Ideal para configuracion final.
OnShowningunoFormSe dispara cada vez que el formulario se hace visible.
OnHideningunoFormSe dispara cuando el formulario se oculta.
OnActivateningunoFormSe dispara cuando el formulario recibe foco (se convierte en la ventana activa).
OnCloseQuery@lCanCloseFormSe dispara antes de cerrar el formulario. Establece lCanClose a .F. para cancelar el cierre. Usar para prompts "¿Guardar cambios?".
OnCloseningunoFormSe dispara cuando el formulario se esta cerrando. Usar para limpieza: cerrar conexiones de base de datos, guardar estado, liberar recursos.
OnDestroyningunoForm, todos los controlesSe dispara cuando el control/formulario se esta destruyendo. Ultima oportunidad para limpieza.

Eventos de Temporizador

EventoParametrosControles DisponiblesDescripcion
OnTimerningunoTimerSe dispara a intervalos regulares establecidos por la propiedad nInterval del Timer (en milisegundos). Usar para tareas periodicas: actualizar un reloj, sondear un servidor, animar, guardado automatico.

Eventos de Dibujo y Redimension

EventoParametrosControles DisponiblesDescripcion
OnPaintningunoPaintBox, Form, Panel, Shape, todos los visualesSe dispara cuando el control necesita redibujarse. Usar con PaintBox para dibujo personalizado GDI/Cairo.
OnResizenNewWidth, nNewHeightForm, Panel, ScrollBoxSe dispara cuando el contenedor se redimensiona. Los parametros proporcionan las nuevas dimensiones.

Resumen Completo de Eventos

EventoCategoriaControles Principales
OnClickRatonButton, ListBox, TreeView, MenuItem, Image
OnDblClickRatonListBox, TreeView, StringGrid, Form
OnMouseDownRatonTodos los controles visuales
OnMouseUpRatonTodos los controles visuales
OnMouseMoveRatonTodos los controles visuales
OnMouseWheelRatonTodos los controles visuales
OnKeyDownTecladoTodos los controles enfocables
OnKeyUpTecladoTodos los controles enfocables
OnKeyPressTecladoEdit, Memo, MaskEdit, ComboBox
OnChangeValorEdit, Memo, ComboBox, CheckBox, TrackBar
OnEnterFocoTodos los controles enfocables
OnExitFocoTodos los controles enfocables
OnCreateCiclo de vidaForm
OnInitCiclo de vidaForm
OnShowCiclo de vidaForm
OnHideCiclo de vidaForm
OnActivateCiclo de vidaForm
OnCloseQueryCiclo de vidaForm
OnCloseCiclo de vidaForm
OnDestroyCiclo de vidaTodos los controles
OnTimerTemporizadorTimer
OnPaintDibujoPaintBox, Shape, Form, Panel
OnResizeDisenoForm, Panel, ScrollBox
Orden de disparo de eventos

Cuando un usuario hace clic en un boton, el orden de eventos es: OnMouseDown -> OnMouseUp -> OnClick. Para entrada de teclado: OnKeyDown -> OnKeyPress -> OnKeyUp. Comprender este orden te ayuda a elegir el evento correcto para tu caso de uso.

En Esta Página

Primeros pasos Paleta de componentes Funciones del IDE Tutoriales Referencia Plataformas Sintaxis de Asignacion de Eventos Eventos del Raton Eventos del Teclado Eventos de Foco y Seleccion Eventos del Ciclo de Vida del Formulario Eventos de Temporizador Eventos de Dibujo y Redimension Resumen Completo de Eventos