Pantallas: @Layout y Screen
Un Screen es una pantalla interactiva 5250: define su distribución (@Layout) y reacciona a eventos del usuario (@Source).
1. Estructura mínima
@Properties {
Type : Screen
Name : SFORM01
Description : "Pantalla de ejemplo"
Path : Screens
}
@References {
Tables = ["../tables/TLADD50.warp"]
}
@Variables {
Global {
Usuario char(10)
Fecha Date
}
}
@Parameters {
}
@Layout {
@Label(1,2,&Usuario)
@Label(1,70,&Fecha)
@Input("txtNroSolicitud", 3, 1, "Nro. Solicitud: ", &NroSolicitud, true)
}
@Source {
Event Init
&Usuario = UserId()
&Fecha = Today()
EndEvent
}
A diferencia de un Program, un Screen no tiene @Structure propia — sólo referencia tablas para leer/escribir.
2. Controles de @Layout
Label(x, y, texto): texto/variable estático.x,y = 1,1(esquina exacta) está prohibido — DDS lo rechaza.Input("Nombre", x, y, texto, &Variable, habilitado): campo editable."Nombre"es lo que devuelveCurrentInput()cuando el cursor cae ahí.habilitadoes opcional (defaulttrue): literal,&Variableo función de retornonumber.DataGridView("Nombre", x, y, filas)[...]: grilla — ver DataGridView.
Los nombres de control pueden prefijarse con @ (@Label, @Input) o no — es sólo estilo, mismo significado.
3. Eventos estándar
| Evento | Cuándo dispara |
|---|---|
Init | Una sola vez, antes del primer despliegue. |
Load | Una sola vez, antes del primer despliegue — típicamente llena el DataGridView con LoadRow(). |
Enter | Al presionar Enter (sin tecla de función activa). |
Refresh | Al presionar F5, si está declarada en @FunctionKeys del proyecto. |
Close | Fijo a F3 — siempre corre y cierra la pantalla, sin declaración necesaria. |
@Source {
Event Init
&Usuario = UserId()
EndEvent
Event Load
For Each In LADD50 Index LADD5010
Where SPT25PAIS = &nPais
&cEstado = ADSTS50
LoadRow()
EndFor
EndEvent
Event Enter
&Control = CurrentInput()
Message("Control activo: " + &Control, Info)
EndEvent
}
4. Teclas de función personalizadas
Además de los eventos estándar, se puede atar un evento a cualquier tecla F1-F24 (F13-F24 vía Shift):
@Source {
Event 'BuscarCliente' 4
Message("Se presionó F4", Info)
EndEvent
}
La etiqueta que se muestra en la línea de atención se configura en @FunctionKeys del .warpcfg del proyecto — ver Proyecto.
5. Mensajes al usuario
Message("Filas encontradas: " + String(&nFilas, 5), Info)
Error (rojo), Warning (amarillo), Info (color normal). Se muestra en el siguiente refresco y se limpia después de un ciclo.
6. Siguiente paso
Si la pantalla necesita mostrar una lista de filas con selección/paginación, ver DataGridView.