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.

Como comandos xBase funcionam

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

graph LR A["fonte .prg
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

ComandoSintaxeDescricaoEquivalente 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 := cTitle
oForm:nWidth := nW
oForm: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:

ComandoSintaxeDescricao
@ ... 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:

ModificadorSintaxeDescricao
SIZESIZE <nWidth>, <nHeight>Define a largura e altura do controle em pixels.
FONTFONT <cName>, <nSize> [BOLD] [ITALIC]Define a fonte do controle com modificadores de estilo opcionais.
COLORCOLOR <nFore> [, <nBack>]Define a cor de primeiro plano e fundo opcionais.
VISIBLEVISIBLE <lVisible>Define a visibilidade inicial (.T. / .F.).
ENABLEDENABLED <lEnabled>Define o estado habilitado inicial (.T. / .F.).
VALUEVALUE <xValue>Define o valor inicial (texto para Edit, estado marcado para CheckBox, etc.).
PROMPTPROMPT <cCaption>Define o texto de legenda/rotulo.
OFOF <oParent>Especifica o container pai (obrigatorio para todos os controles exceto DEFINE FORM).
ACTIONACTION <codigo>Atribui um bloco de codigo ao evento padrao do controle (OnClick para botoes, OnChange para edicoes).
WHENWHEN <lCondicao>Expressao condicional que determina se o controle esta habilitado.
VALIDVALID <lCondicao>Expressao de validacao verificada quando o controle perde o foco.
PICTUREPICTURE <cFile>Define o arquivo de imagem para controles Image.
ITEMSITEMS <aArray>Define a lista de itens para ListBox, ComboBox e controles similares.
INTERVALINTERVAL <nMs>Define o intervalo do timer em milissegundos.
MESSAGEMESSAGE <cHint>Define o texto de dica/tooltip.

Comandos de Menu e Barra de Ferramentas

ComandoSintaxeDescricao
DEFINE POPUPDEFINE POPUP <oMenu> [MENU]Cria um objeto de popup/menu.
DEFINE BARDEFINE BAR <nId> OF <oMenu> PROMPT <cText> [ACTION <codigo>]Adiciona um item de menu (barra) a um menu.
DEFINE TOOLBARDEFINE TOOLBAR <oTb> [OF <oForm>]Cria um container de barra de ferramentas no formulario.
DEFINE BUTTONDEFINE BUTTON <oTbBtn> OF <oTb> PROMPT <cCaption> [ACTION <codigo>]Adiciona um botao a uma barra de ferramentas.
ComandoSintaxeDescricao
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> ] ) → nRespostaExibe um dialogo Sim/Nao. Retorna 6 (Sim) ou 7 (Nao).
MsgYesNoCancel()MsgYesNoCancel( <cMensagem> [, <cTitulo> ] ) → nRespostaExibe 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

ComandoCategoriaArquivo de Header
DEFINE FORMFormulariohbbuilder.ch
ACTIVATE FORMFormulariohbbuilder.ch
ON INITFormulariohbbuilder.ch
ON CLOSEFormulariohbbuilder.ch
@ ... BUTTONControlehbbuilder.ch
@ ... LABELControlehbbuilder.ch
@ ... EDITControlehbbuilder.ch
@ ... COMBOBOXControlehbbuilder.ch
@ ... LISTBOXControlehbbuilder.ch
@ ... CHECKBOXControlehbbuilder.ch
@ ... GROUPBOXControlehbbuilder.ch
@ ... MEMOControlehbbuilder.ch
@ ... IMAGEControlehbbuilder.ch
@ ... PROGRESSBARControlehbbuilder.ch
@ ... TIMERControlehbbuilder.ch
DEFINE POPUPMenuhbbuilder.ch
DEFINE BARMenuhbbuilder.ch
DEFINE TOOLBARBarra de Ferramentashbbuilder.ch
DEFINE BUTTONBarra de Ferramentashbbuilder.ch
Comandos vs. OOP

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.

Nesta Página

Primeiros Passos Paleta de Componentes Recursos do IDE Tutoriais Referencia Plataformas Arquitetura de Expansao de Comandos Comandos de Formulario Comandos de Criacao de Controles Sintaxe @ row, col (Estilo de Coordenadas de Tela) Comandos Modificadores de Propriedade Comandos de Menu e Barra de Ferramentas Comandos de Dialogo Resumo Completo de Comandos