Usina BRGuía AdvPL
Ingresar
← Todos los temas
CLASEPublicado

TDialog

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

Crea una ventana de diálogo para alojar componentes visuales en rutinas AdvPL.

Interfaz visualClasesDiálogosSmartClientTDialog
01 · DESCRIPCIÓN GENERAL

Descripción general

TDialog es una clase visual utilizada para crear ventanas de diálogo en SmartClient. Funciona como contenedor para componentes como SAY, GET, BUTTON, CHECKBOX, BITMAP, BROWSE, FOLDER y paneles. En una pantalla típica, la rutina crea la dialog, agrega componentes indicando su objeto padre y finalmente llama a Activate() para mostrar la ventana y entregar el control a la interfaz.

02 · SINTAXIS

Sintaxis

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

Parámetros

nTop, nLeft, nBottom, nRight
NuméricoObligatorio

Coordenadas de la ventana. Con PIXEL, representan el área en píxeles utilizada por SmartClient.

cTitle
CarácterObligatorio

Título mostrado en la barra de la ventana.

Colores de texto/fondo
NuméricoOpcional

Colores utilizados en la ventana, normalmente informados mediante constantes disponibles en los includes.

lPixels
LógicoOpcional

Indica que las medidas informadas deben interpretarse en píxeles.

Activate()
MétodoObligatorio

Muestra la dialog. Según la versión de la LIB, puede recibir opciones como centrado y bloque de activación.

03 · EJEMPLO PRÁCTICO

Ventana simple con TDialog

#Include "TOTVS.ch"

User Function ExTDialog()
    Local oDlg
    Local nAltura     := 180
    Local nAncho      := 360
    Local lUsaPixeles := .T.
    Local lCentrada   := .T.
    Local bAlIniciar  := {|| ConOut("Dialog activada") }

    oDlg := TDialog():New(0, 0, nAltura, nAncho, ;
        "Pantalla usando TDialog", , , , , , , , , lUsaPixeles)

    oDlg:Activate(, , , lCentrada, , , bAlIniciar)
Return
Resultado esperado

La dialog se crea en memoria y se muestra centrada. bAlIniciar se ejecuta durante la activación.

04 · EJEMPLO PRÁCTICO

TDialog como contenedor 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 y BUTTON se crean como hijos de oDlg. Al hacer clic en el botón, el bloque ACTION utiliza el valor digitado.

05 · EJEMPLO PRÁCTICO

Forma declarativa con 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

La sintaxis DEFINE/ACTIVATE es más declarativa y el compilador la traduce en llamadas a las clases visuales correspondientes.

BUENAS PRÁCTICAS
  • Utiliza TDialog cuando necesites una ventana modal propia para entrada, confirmación o presentación de información.
  • Informa el objeto de la dialog como padre de los componentes, normalmente mediante la cláusula OF oDlg.
  • Mantén la construcción de la pantalla en tres pasos claros: crear la dialog, posicionar los componentes y activar la ventana.
  • Prefiere nombres de variables que indiquen el papel visual del objeto, como oDlg, oGetNombre, oBtnConfirmar y oSayEstado.
  • Para pantallas más complejas, evalúa FWDefSize, FWLayer, MVC o componentes de framework que faciliten organización y redimensionamiento.
ERRORES COMUNES
  • Una dialog modal bloquea la interacción con la ventana padre mientras está abierta; es el comportamiento esperado.
  • Los componentes sin el padre correcto pueden no aparecer o quedar vinculados a la ventana activa equivocada.
  • Mezclar coordenadas en píxeles con otra unidad puede causar desalineación entre entornos.
  • Los bloques ACTION extensos dificultan el mantenimiento; llama a funciones auxiliares.
  • No utilices TDialog como sustituto de MVC cuando la pantalla requiera modelo de datos, validaciones estructuradas e integración con rutinas de mantenimiento.

Contenido relacionado

REFERENCIAS
  1. TOTVS. TDialog. TDN. Referencia oficial de la clase visual TDialog.
  2. Terminal de Informação. Creando pantallas con TDialog — Maratón AdvPL y TL++ 486. Publicado el 19 de junio de 2024.
  3. TOTVS. Clase TWindow: manipular la pantalla padre con pantallas hijas abiertas. Central de Atención TOTVS, 4 jul. 2024.
Estado
Publicado
Página creada el
Última revisión el
Idioma original
Portugués
Revisión
Usina.BR
0 comentario(s) aprobado(s)

Comentarios

Todavía no hay comentarios aprobados.

Inicia sesión con Google o Microsoft para comentar.

Desarrollado con Usina Docs · Alpha