Referencia de Comandos xBase

HarbourBuilder usa las directivas de preprocesador #xcommand y #translate de Harbour para proporcionar una sintaxis estilo xBase/Clipper familiar para crear y configurar controles. Estos comandos estan definidos en hbbuilder.ch y se expanden en tiempo de compilacion a llamadas de metodos OOP de Harbour.

Como funcionan los comandos xBase

Cuando escribes DEFINE FORM oForm TITLE "Mi App", el preprocesador de Harbour lo transforma en codigo OOP de Harbour que crea un objeto TForm y establece sus propiedades. Esto ocurre en tiempo de compilacion. Puedes usar cualquiera de los dos estilos; los comandos son simplemente una abreviatura mas legible.

Arquitectura de Expansion de Comandos

Cuando escribes comandos xBase, el preprocesador de Harbour los traduce a llamadas OOP:

--- Estilo de comando xBase ---
local oForm

DEFINE FORM oForm TITLE "Ventana Principal" ;
   SIZE 800, 600 FONT "Segoe UI", 10

ON INIT oForm MsgInfo( "Formulario inicializado" )

ACTIVATE FORM oForm CENTERED

--- Lo que el preprocesador genera (equivalente OOP) ---
oForm := TForm():New( nil )
oForm:cTitle  := "Ventana Principal"
oForm:nWidth  := 800
oForm:nHeight := 600
oForm:SetFont( "Segoe UI", 10 )
oForm:OnInit  := { || MsgInfo( "Formulario inicializado" ) }
oForm:lCentered := .T.
MsgRun( oForm )   /// activa y entra en bucle de eventos

Comandos de Formulario

ComandoSintaxisDescripcion
DEFINE FORMDEFINE FORM <oForm> [TITLE <cTitle>] [SIZE <nW>, <nH>] [FONT <cFont>, <nSize>]Crea una nueva ventana de formulario con titulo, tamano y fuente opcionales.
ACTIVATE FORMACTIVATE FORM <oForm> [CENTERED] [MAXIMIZED] [MODAL]Muestra el formulario e inicia el bucle de eventos. Bloquea hasta que se cierra el formulario.
ON INITON INIT <oForm> <codigo>Asigna un bloque de codigo de inicializacion al evento OnInit del formulario.
ON CLOSEON CLOSE <oForm> <codigo>Asigna un bloque de codigo de limpieza al evento OnClose del formulario.

Comandos de Creacion de Controles (@ row, col)

La sintaxis clasica estilo Clipper @ row, col crea controles en coordenadas especificas dentro de un contenedor padre:

ComandoSintaxisDescripcion
@ ... BUTTON@ <row>, <col> BUTTON <oBtn> PROMPT <cCaption> OF <oParent> [SIZE <nW>, <nH>] [ACTION <codigo>]Crea un boton de pulsacion en la posicion especificada.
@ ... LABEL@ <row>, <col> LABEL <oLbl> VALUE <cText> OF <oParent> [SIZE <nW>, <nH>]Crea una etiqueta de texto estatico.
@ ... EDIT@ <row>, <col> EDIT <oEdt> [VALUE <cText>] OF <oParent> [SIZE <nW>, <nH>]Crea un campo de entrada de texto de una sola linea.
@ ... COMBOBOX@ <row>, <col> COMBOBOX <oCbo> ITEMS <aItems> OF <oParent> [SIZE <nW>, <nH>]Crea un cuadro combinado desplegable.
@ ... LISTBOX@ <row>, <col> LISTBOX <oLbx> ITEMS <aItems> OF <oParent> [SIZE <nW>, <nH>]Crea un control de cuadro de lista.
@ ... CHECKBOX@ <row>, <col> CHECKBOX <oChk> PROMPT <cCaption> OF <oParent> [SIZE <nW>, <nH>]Crea una casilla de verificacion.
@ ... GROUPBOX@ <row>, <col> GROUPBOX <oGrp> PROMPT <cCaption> OF <oParent> [SIZE <nW>, <nH>]Crea un cuadro de grupo (contenedor enmarcado con titulo).
@ ... MEMO@ <row>, <col> MEMO <oMemo> [VALUE <cText>] OF <oParent> [SIZE <nW>, <nH>]Crea un control de edicion de texto multi-linea.
@ ... IMAGE@ <row>, <col> IMAGE <oImg> PICTURE <cFile> OF <oParent> [SIZE <nW>, <nH>]Crea un control de visualizacion de imagen.
@ ... TIMER@ <row>, <col> TIMER <oTmr> INTERVAL <nMs> OF <oParent> [ACTION <codigo>]Crea un control de temporizador (no visual).

Comandos de Modificadores de Propiedad

Estos comandos se pueden agregar a cualquier definicion de control para establecer propiedades adicionales:

ModificadorSintaxisDescripcion
SIZESIZE <nWidth>, <nHeight>Establece el ancho y alto del control en pixeles.
FONTFONT <cName>, <nSize> [BOLD] [ITALIC]Establece la fuente del control con modificadores de estilo opcionales.
COLORCOLOR <nFore> [, <nBack>]Establece el color de primer plano y fondo opcional.
VISIBLEVISIBLE <lVisible>Establece la visibilidad inicial (.T. / .F.).
ENABLEDENABLED <lEnabled>Establece el estado de habilitacion inicial (.T. / .F.).
VALUEVALUE <xValue>Establece el valor inicial (texto para Edit, estado de marcado para CheckBox, etc.).
PROMPTPROMPT <cCaption>Establece el texto de etiqueta/titulo.
OFOF <oParent>Especifica el contenedor padre (requerido para todos los controles excepto DEFINE FORM).
ACTIONACTION <codigo>Asigna un bloque de codigo al evento predeterminado del control (OnClick para botones, OnChange para ediciones).
ITEMSITEMS <aArray>Establece la lista de elementos para ListBox, ComboBox y controles similares.
INTERVALINTERVAL <nMs>Establece el intervalo del temporizador en milisegundos.
ComandoSintaxisDescripcion
MsgInfo()MsgInfo( <cMensaje> [, <cTitulo> ] )Muestra un cuadro de mensaje de informacion.
MsgStop()MsgStop( <cMensaje> [, <cTitulo> ] )Muestra un cuadro de mensaje de error/parada.
MsgYesNo()MsgYesNo( <cMensaje> [, <cTitulo> ] ) → nRespuestaMuestra un dialogo Si/No. Retorna 6 (Si) o 7 (No).
MsgYesNoCancel()MsgYesNoCancel( <cMensaje> [, <cTitulo> ] ) → nRespuestaMuestra un dialogo Si/No/Cancelar. Retorna 6 (Si), 7 (No), o 2 (Cancelar).
MsgRun()MsgRun( <oForm> )Activa un formulario y entra en el bucle de eventos. Equivalente a ACTIVATE FORM.
Comandos vs. OOP

Ambos estilos estan soportados completamente. Los comandos xBase son mas concisos y familiares para desarrolladores Clipper/xBase. El estilo OOP te da un control mas preciso y es preferido para creacion dinamica de controles en tiempo de ejecucion. El Disenador de Formularios genera comandos xBase por defecto, pero puedes cambiar a codigo estilo OOP en cualquier momento — el analizador bidireccional comprende ambos.

En Esta Página

Primeros pasos Paleta de componentes Funciones del IDE Tutoriales Referencia Plataformas Arquitectura de Expansion de Comandos Comandos de Formulario Comandos de Creacion de Controles (@ row, col) Comandos de Modificadores de Propiedad Comandos de Dialogo