Referencia de Comandos xBase
O HarbourBuilder usa as diretivas de preprocessador #xcommand e #translate do Harbour para
fornecer uma sintaxe estilo xBase/Clipper familiar para criar e configurar controles. Estes comandos
sao definidos em hbbuilder.ch e sao expandidos em tempo de compilacao para chamadas de metodo OOP Harbour.
Quando voce escreve DEFINE FORM oForm TITLE "Meu App", o preprocessador Harbour o transforma em
codigo OOP Harbour que cria um objeto TForm e define suas propriedades. Isso acontece em tempo de
compilacao — o codigo OOP gerado e o que realmente e compilado e executado. Voce pode usar qualquer estilo;
os comandos sao simplesmente um atalho mais legivel.
Arquitetura de Expansao de Comandos
com comandos xBase"] --> B["Preprocessador Harbour
#xcommand / #translate"] B --> C["Codigo OOP Harbour
TForm:New(), oBtn:SetText()"] C --> D["Compilador Harbour
harbour.exe"] D --> E["Codigo C
arquivos .c"] E --> F["Binario nativo"] style A fill:#58a6ff,stroke:#388bfd,color:#0d1117 style B fill:#8b5cf6,stroke:#7c3aed,color:#fff style C fill:#f59e0b,stroke:#d97706,color:#0d1117 style D fill:#3fb950,stroke:#2ea043,color:#0d1117 style E fill:#f59e0b,stroke:#d97706,color:#0d1117 style F fill:#3fb950,stroke:#2ea043,color:#0d1117
Comandos de Formulario
| Comando | Sintaxe | Descricao | Equivalente OOP |
|---|---|---|---|
DEFINE FORM |
DEFINE FORM <oForm> [TITLE <cTitle>] [SIZE <nW>, <nH>] [FONT <cFont>, <nSize>] |
Cria um novo formulario de janela com titulo, tamanho e fonte opcionais. | oForm := TForm():New( nil )oForm:cTitle := cTitleoForm:nWidth := nWoForm:nHeight := nH |
ACTIVATE FORM |
ACTIVATE FORM <oForm> [CENTERED] [MAXIMIZED] [MODAL] |
Exibe o formulario e inicia o loop de eventos. Bloqueia ate o formulario ser fechado. | oForm:Show()se CENTERED: oForm:lCentered := .T.se MAXIMIZED: oForm:nWindowState := 2 |
ON INIT |
ON INIT <oForm> <codigo> |
Atribui um bloco de codigo de inicializacao ao evento OnInit do formulario. | oForm:OnInit := { || <codigo> } |
ON CLOSE |
ON CLOSE <oForm> <codigo> |
Atribui um bloco de codigo de limpeza ao evento OnClose do formulario. | oForm:OnClose := { || <codigo> } |
Comandos de Criacao de Controles
Sintaxe @ row, col (Estilo de Coordenadas de Tela)
A sintaxe classica estilo Clipper @ row, col cria controles em coordenadas especificas dentro de um container pai:
| Comando | Sintaxe | Descricao |
|---|---|---|
@ ... BUTTON | @ <row>, <col> BUTTON <oBtn> PROMPT <cCaption> OF <oParent> [SIZE <nW>, <nH>] [ACTION <codigo>] | Cria um botao de pressao na posicao especificada. |
@ ... LABEL | @ <row>, <col> LABEL <oLbl> VALUE <cText> OF <oParent> [SIZE <nW>, <nH>] | Cria um rotulo de texto estatico. |
@ ... EDIT | @ <row>, <col> EDIT <oEdt> [VALUE <cText>] OF <oParent> [SIZE <nW>, <nH>] | Cria um campo de entrada de texto de linha unica. |
@ ... COMBOBOX | @ <row>, <col> COMBOBOX <oCbo> ITEMS <aItems> OF <oParent> [SIZE <nW>, <nH>] | Cria uma caixa de combinacao dropdown. |
@ ... LISTBOX | @ <row>, <col> LISTBOX <oLbx> ITEMS <aItems> OF <oParent> [SIZE <nW>, <nH>] | Cria um controle de caixa de listagem. |
@ ... CHECKBOX | @ <row>, <col> CHECKBOX <oChk> PROMPT <cCaption> OF <oParent> [SIZE <nW>, <nH>] | Cria uma caixa de selecao. |
@ ... GROUPBOX | @ <row>, <col> GROUPBOX <oGrp> PROMPT <cCaption> OF <oParent> [SIZE <nW>, <nH>] | Cria uma caixa de grupo (container emoldurado com legenda). |
@ ... MEMO | @ <row>, <col> MEMO <oMemo> [VALUE <cText>] OF <oParent> [SIZE <nW>, <nH>] | Cria um controle de edicao de texto multi-linha. |
@ ... IMAGE | @ <row>, <col> IMAGE <oImg> PICTURE <cFile> OF <oParent> [SIZE <nW>, <nH>] | Cria um controle de exibicao de imagem. |
@ ... PROGRESSBAR | @ <row>, <col> PROGRESSBAR <oPb> OF <oParent> [SIZE <nW>, <nH>] | Cria um controle de barra de progresso. |
@ ... TIMER | @ <row>, <col> TIMER <oTmr> INTERVAL <nMs> OF <oParent> [ACTION <codigo>] | Cria um controle de timer (nao visual). |
Comandos Modificadores de Propriedade
Estes comandos podem ser adicionados a qualquer definicao de controle para definir propriedades adicionais:
| Modificador | Sintaxe | Descricao |
|---|---|---|
SIZE | SIZE <nWidth>, <nHeight> | Define a largura e altura do controle em pixels. |
FONT | FONT <cName>, <nSize> [BOLD] [ITALIC] | Define a fonte do controle com modificadores de estilo opcionais. |
COLOR | COLOR <nFore> [, <nBack>] | Define a cor de primeiro plano e fundo opcionais. |
VISIBLE | VISIBLE <lVisible> | Define a visibilidade inicial (.T. / .F.). |
ENABLED | ENABLED <lEnabled> | Define o estado habilitado inicial (.T. / .F.). |
VALUE | VALUE <xValue> | Define o valor inicial (texto para Edit, estado marcado para CheckBox, etc.). |
PROMPT | PROMPT <cCaption> | Define o texto de legenda/rotulo. |
OF | OF <oParent> | Especifica o container pai (obrigatorio para todos os controles exceto DEFINE FORM). |
ACTION | ACTION <codigo> | Atribui um bloco de codigo ao evento padrao do controle (OnClick para botoes, OnChange para edicoes). |
WHEN | WHEN <lCondicao> | Expressao condicional que determina se o controle esta habilitado. |
VALID | VALID <lCondicao> | Expressao de validacao verificada quando o controle perde o foco. |
PICTURE | PICTURE <cFile> | Define o arquivo de imagem para controles Image. |
ITEMS | ITEMS <aArray> | Define a lista de itens para ListBox, ComboBox e controles similares. |
INTERVAL | INTERVAL <nMs> | Define o intervalo do timer em milissegundos. |
MESSAGE | MESSAGE <cHint> | Define o texto de dica/tooltip. |
Comandos de Menu e Barra de Ferramentas
| Comando | Sintaxe | Descricao |
|---|---|---|
DEFINE POPUP | DEFINE POPUP <oMenu> [MENU] | Cria um objeto de popup/menu. |
DEFINE BAR | DEFINE BAR <nId> OF <oMenu> PROMPT <cText> [ACTION <codigo>] | Adiciona um item de menu (barra) a um menu. |
DEFINE TOOLBAR | DEFINE TOOLBAR <oTb> [OF <oForm>] | Cria um container de barra de ferramentas no formulario. |
DEFINE BUTTON | DEFINE BUTTON <oTbBtn> OF <oTb> PROMPT <cCaption> [ACTION <codigo>] | Adiciona um botao a uma barra de ferramentas. |
Comandos de Dialogo
| Comando | Sintaxe | Descricao |
|---|---|---|
MsgInfo() | MsgInfo( <cMensagem> [, <cTitulo> ] ) | Exibe uma caixa de mensagem de informacao. |
MsgStop() | MsgStop( <cMensagem> [, <cTitulo> ] ) | Exibe uma caixa de mensagem de erro/parada. |
MsgYesNo() | MsgYesNo( <cMensagem> [, <cTitulo> ] ) → nResposta | Exibe um dialogo Sim/Nao. Retorna 6 (Sim) ou 7 (Nao). |
MsgYesNoCancel() | MsgYesNoCancel( <cMensagem> [, <cTitulo> ] ) → nResposta | Exibe um dialogo Sim/Nao/Cancelar. Retorna 6 (Sim), 7 (Nao) ou 2 (Cancelar). |
MsgRun() | MsgRun( <oForm> ) | Ativa um formulario e entra no loop de eventos. Equivalente a ACTIVATE FORM. |
Resumo Completo de Comandos
| Comando | Categoria | Arquivo de Header |
|---|---|---|
DEFINE FORM | Formulario | hbbuilder.ch |
ACTIVATE FORM | Formulario | hbbuilder.ch |
ON INIT | Formulario | hbbuilder.ch |
ON CLOSE | Formulario | hbbuilder.ch |
@ ... BUTTON | Controle | hbbuilder.ch |
@ ... LABEL | Controle | hbbuilder.ch |
@ ... EDIT | Controle | hbbuilder.ch |
@ ... COMBOBOX | Controle | hbbuilder.ch |
@ ... LISTBOX | Controle | hbbuilder.ch |
@ ... CHECKBOX | Controle | hbbuilder.ch |
@ ... GROUPBOX | Controle | hbbuilder.ch |
@ ... MEMO | Controle | hbbuilder.ch |
@ ... IMAGE | Controle | hbbuilder.ch |
@ ... PROGRESSBAR | Controle | hbbuilder.ch |
@ ... TIMER | Controle | hbbuilder.ch |
DEFINE POPUP | Menu | hbbuilder.ch |
DEFINE BAR | Menu | hbbuilder.ch |
DEFINE TOOLBAR | Barra de Ferramentas | hbbuilder.ch |
DEFINE BUTTON | Barra de Ferramentas | hbbuilder.ch |
Ambos os estilos sao totalmente suportados. Os comandos xBase sao mais concisos e familiares para desenvolvedores Clipper/xBase. O estilo OOP oferece controle mais fino e e preferido para criacao dinamica de controles em tempo de execucao. O Designer de Formularios gera comandos xBase por padrao, mas voce pode alternar para codigo estilo OOP a qualquer momento — o parser bidirecional compreende ambos.