Usina BRAdvPL Guia
Entrar
← Todos os tópicos
CLASSEPublicado

TDialog

TDialog():New( <nTop>, <nLeft>, <nBottom>, <nRight>, <cTitle>, ... )

Cria uma janela de diálogo para hospedar componentes visuais em rotinas AdvPL.

Interface visualClassesDiálogosSmartClientTDialog
01 · VISÃO GERAL

Visão geral

TDialog é uma classe visual usada para criar janelas de diálogo no SmartClient. Ela funciona como contêiner para componentes como SAY, GET, BUTTON, CHECKBOX, BITMAP, BROWSE, FOLDER e painéis. Em uma tela típica, a rotina instancia ou define a dialog, adiciona os componentes informando o objeto pai e, por fim, chama Activate() para exibir a janela e entregar o controle à interface.

02 · SINTAXE

Sintaxe

TDialog():New( <nTop>, <nLeft>, <nBottom>, <nRight>, <cTitle>, ... )

Parâmetros

nTop, nLeft, nBottom, nRight
NuméricoObrigatório

Coordenadas da janela. Com PIXEL, representam a área em pixels usada pelo SmartClient.

cTitle
CaractereObrigatório

Título exibido na barra da janela.

nCorTexto / nCorFundo
NuméricoOpcional

Cores utilizadas na janela, normalmente informadas por constantes de cor disponíveis nas includes.

lPixels
LógicoOpcional

Indica que as medidas informadas devem ser interpretadas em pixels.

Activate()
MétodoObrigatório

Exibe a dialog. Pode receber opções como centralização e bloco executado na ativação, conforme a versão da LIB.

03 · EXEMPLO PRÁTICO

Janela simples com TDialog

#Include "TOTVS.ch"

User Function ExTDialog()
    Local oDlg
    Local nAltura     := 180
    Local nLargura    := 360
    Local lUsaPixels  := .T.
    Local lCentraliza := .T.
    Local bAoIniciar  := {|| ConOut("Dialog ativada") }

    oDlg := TDialog():New(0, 0, nAltura, nLargura, ;
        "Tela usando TDialog", , , , , , , , , lUsaPixels)

    oDlg:Activate(, , , lCentraliza, , , bAoIniciar)
Return
Resultado esperado

A dialog é criada em memória e exibida centralizada. O bloco bAoIniciar é executado no momento da ativação.

04 · EXEMPLO PRÁTICO

TDialog como contêiner de componentes

#Include "TOTVS.ch"

User Function ExTDialogCampos()
    Local oDlg
    Local cNome := Space(40)

    oDlg := TDialog():New(0, 0, 160, 380, "Cadastro rápido", , , , , , , , , .T.)

    @ 20, 20 Say "Nome:" Size 40, 10 Of oDlg Pixel
    @ 18, 65 Get cNome Size 140, 10 Of oDlg Pixel
    @ 50, 65 Button "Confirmar" Size 65, 14 ;
        Action MsgInfo("Olá, " + AllTrim(cNome)) Of oDlg Pixel

    oDlg:Activate(, , , .T.)
Return
Resultado esperado

SAY, GET e BUTTON são criados como filhos de oDlg. Ao clicar no botão, o bloco ACTION usa o valor digitado.

05 · EXEMPLO PRÁTICO

Forma declarativa com DEFINE DIALOG

#Include "TOTVS.ch"

User Function ExDefineDialog()
    Local oDlg

    Define Dialog oDlg Title "Exemplo declarativo" ;
        From 0, 0 To 160, 380 Pixel

    @ 25, 25 Say "Interface criada por comando" ;
        Size 150, 12 Of oDlg Pixel

    Activate Dialog oDlg Centered
Return
Resultado esperado

A sintaxe DEFINE/ACTIVATE é mais declarativa e, durante a compilação, é traduzida para chamadas das classes visuais correspondentes.

BOAS PRÁTICAS
  • Use TDialog quando precisar montar uma janela modal própria para entrada, confirmação ou apresentação de informações.
  • Informe o objeto da dialog como pai dos componentes, normalmente pela cláusula OF oDlg nos comandos visuais.
  • Mantenha a criação da tela em três etapas claras: criar a dialog, posicionar os componentes e ativar a janela.
  • Prefira nomes de variáveis que indiquem o papel visual do objeto, como oDlg, oGetNome, oBtnConfirmar e oSayStatus.
  • Para telas mais complexas, avalie o uso de FWDefSize, FWLayer, MVC ou componentes de framework que facilitem organização e redimensionamento.
ARMADILHAS COMUNS
  • Uma dialog modal bloqueia a interação com a tela pai enquanto estiver aberta; isso é comportamento esperado desse tipo de janela.
  • Componentes sem o pai correto podem não aparecer ou podem ficar vinculados à janela ativa errada.
  • Misturar coordenadas em pixels com outra unidade pode causar desalinhamento entre ambientes.
  • Blocos ACTION extensos dificultam manutenção; prefira chamar funções auxiliares.
  • Evite usar TDialog como substituto de uma rotina MVC quando a tela exigir modelo de dados, validações estruturadas e integração com cadastros.

Conteúdos relacionados

REFERÊNCIAS
  1. TOTVS. TDialog. TDN. Referência oficial da classe visual TDialog.
  2. Terminal de Informação. Criando telas com a TDialog — Maratona AdvPL e TL++ 486. Publicado em 19 jun. 2024.
  3. TOTVS. Classe TWindow: manipular a tela pai com telas filhas abertas. Central de Atendimento TOTVS, 4 jul. 2024.
Situação
Publicado
Página criada em
Última revisão em
Idioma original
Português
Revisão
Usina.BR
0 comentário(s) aprovado(s)

Comentários

Ainda não há comentários aprovados.

Entre com Google ou Microsoft para comentar.

Powered by Usina Docs · Alpha