Componentes visuais em AdvPL
DEFINE ... · @ ... SAY · @ ... GET · @ ... BUTTON · ACTIVATE ...Entenda como comandos visuais oferecem uma sintaxe legível para instanciar e configurar classes de interface.
Visão geral
Os comandos de componentes visuais do AdvPL permitem utilizar classes da interface por meio de instruções mais simples. Durante a compilação, esses comandos são traduzidos para chamadas de construtores e métodos das classes correspondentes. Palavras-chave como FROM, TO, SIZE, OF e ACTION tornam os parâmetros mais reconhecíveis e ajudam na leitura e manutenção do código.
Sintaxe
DEFINE ... · @ ... SAY · @ ... GET · @ ... BUTTON · ACTIVATE ...Diálogo simples com SAY, GET e BUTTON
#Include "TOTVS.ch"
User Function ExVisual()
Local oDlg
Local cNome := Space(40)
Define MsDialog oDlg Title "Cadastro rápido" ;
From 0, 0 To 150, 360 Pixel
@ 20, 20 Say "Nome:" Size 40, 10 Of oDlg Pixel
@ 18, 65 Get cNome Size 110, 10 Of oDlg Pixel
@ 50, 65 Button "Confirmar" Size 55, 14 ;
Action MsgInfo("Olá, " + AllTrim(cNome)) Of oDlg Pixel
Activate MsDialog oDlg Centered
ReturnO diálogo funciona como contêiner. SAY apresenta o rótulo, GET edita a variável e BUTTON executa um bloco de ação.
Evento encaminhado para uma função
#Include "TOTVS.ch"
User Function ExAcaoVisual()
Local oDlg
Define MsDialog oDlg Title "Processamento" ;
From 0, 0 To 120, 300 Pixel
@ 35, 85 Button "Executar" Size 55, 14 ;
Action ProcessarPedido() Of oDlg Pixel
Activate MsDialog oDlg Centered
Return
Static Function ProcessarPedido()
MsgInfo("Processamento iniciado")
ReturnO bloco de ACTION permanece curto e delega a regra a uma função, facilitando leitura e teste.
Comando e classe: responsabilidades
// Forma declarativa por comando:
@ 20, 20 Say "Cliente:" Size 45, 10 Of oDlg Pixel
// Na compilação, o comando é convertido em chamadas
// da classe visual correspondente. A implementação
// exata depende do componente e da versão da LIB.A sintaxe por palavras-chave melhora a intenção do fonte, enquanto a classe fornece o comportamento efetivo do componente.
- A sintaxe de comando é uma camada oferecida pelo compilador; em execução, o comportamento é realizado pelas classes visuais correspondentes.
- Use OF para deixar explícito o diálogo ou contêiner ao qual o componente pertence.
- Agrupe criação, configuração e ativação da interface em uma ordem clara.
- Blocos de código são usados com frequência em ACTION, VALID, WHEN e outros eventos dos componentes.
- Consulte a documentação do comando ou da classe para confirmar parâmetros, includes e disponibilidade na LIB utilizada.
- Não misture coordenadas em PIXEL com outras unidades sem verificar o padrão esperado pelo contêiner.
- Um componente criado sem associação correta ao diálogo pode não aparecer ou ter ciclo de vida inesperado.
- Blocos de evento extensos dificultam manutenção e depuração; prefira chamar uma função dedicada.
- A equivalência entre comando e classe não significa que todas as opções da classe estejam necessariamente expostas pela sintaxe do comando.
- Interfaces históricas podem depender de SmartClient e do contexto da rotina; confirme a compatibilidade com o ambiente e o tipo de execução.
