Capítulo 27: Template de Windows Forms
Capítulo 27: Template de Windows Forms
Sección titulada «Capítulo 27: Template de Windows Forms»Parte VIII: Windows Forms - Sección 16: Interfaces gráficas - Nivel: Intermedio
Objetivos de aprendizaje
Sección titulada «Objetivos de aprendizaje»Al finalizar este capítulo serás capaz de:
- Crear una ventana básica (
Form) desde cero en un script de EPLAN - Entender la estructura estándar de una clase Windows Forms
- Diferenciar entre
Show()(no modal) yShowDialog()(modal) - Configurar propiedades básicas como título, tamaño y posición
Requisitos previos
Sección titulada «Requisitos previos»- Conceptos de Clases (Capítulo 8)
- Atributo [Start]
Introducción: Interfaces Gráficas (GUI)
Sección titulada «Introducción: Interfaces Gráficas (GUI)»Hasta ahora, tus scripts han sido “invisibles” o usaban mensajes simples. Para herramientas profesionales, necesitas una Interfaz Gráfica de Usuario (GUI) donde el usuario pueda:
- Escribir texto
- Seleccionar opciones de listas
- Pulsar botones
EPLAN soporta nativamente Windows Forms (WinForms), la tecnología estándar de interfaz de usuario de .NET Framework.
1. Estructura de un Script con interfaz
Sección titulada «1. Estructura de un Script con interfaz»Un script con interfaz tiene dos partes:
- La clase del Formulario: Hereda de
System.Windows.Forms.Form. Define cómo se ve la ventana. - La clase del Script: Contiene el método
[Start]que crea y muestra el formulario.
1.1 El “Template” Básico
Sección titulada «1.1 El “Template” Básico»Basado en EPLAN-Scripting-4.0/09_Forms/01_Template.cs:
using System.Windows.Forms;using Eplan.EplApi.Scripting;
// PARTE 1: La clase del Scriptpublic class ScriptConInterfaz{ [Start] public void Function() { // 1. Crear instancia del formulario MiVentana frm = new MiVentana();
// 2. Mostrarlo de forma MODAL (bloquea EPLAN hasta cerrar) frm.ShowDialog(); }}
// PARTE 2: La clase del Formulariopublic class MiVentana : Form{ public MiVentana() { // 1. Inicializar componentes (obligatorio) InitializeComponent(); }
private void InitializeComponent() { // 2. Configurar propiedades de la ventana this.Text = "Mi Primera Ventana EPLAN"; this.StartPosition = FormStartPosition.CenterScreen; this.Width = 400; this.Height = 300; }}2. Show() vs ShowDialog()
Sección titulada «2. Show() vs ShowDialog()»Show(): Abre la ventana y el script continúa inmediatamente. La ventana se queda flotando pero el usuario puede seguir interactuando con EPLAN. (No recomendado para scripts simples).ShowDialog(): Abre la ventana y detiene la ejecución del script hasta que la ventana se cierra. Bloquea EPLAN (Modal). Esta es la forma correcta para cuadros de diálogo donde esperas que el usuario introduzca datos y pulse “Aceptar”.
3. Configuración básica del Form
Sección titulada «3. Configuración básica del Form»Dentro de InitializeComponent(), puedes configurar:
- StartPosition:
CenterScreen: Centrado en el monitor.CenterParent: Centrado en la ventana padre (EPLAN).
- FormBorderStyle:
Sizable: El usuario puede redimensionar (default).FixedDialog: Tamaño fijo, ideal para diálogos.
- Text: El título de la ventana.
this.Text = "Configuración de Proyecto";this.StartPosition = FormStartPosition.CenterScreen;this.FormBorderStyle = FormBorderStyle.FixedDialog;this.MaximizeBox = false; // Sin botón de maximizarthis.MinimizeBox = false; // Sin botón de minimizar4. Práctica: Ventana vacía
Sección titulada «4. Práctica: Ventana vacía»Copia el template anterior y ejecútalo en EPLAN. Verás una ventana vacía en el centro de la pantalla. El script “se pausa” mientras la ventana está abierta y termina cuando la cierras (X).
Resumen
Sección titulada «Resumen»- Hereda de
System.Windows.Forms.Formpara crear ventanas. - Usa
InitializeComponentpara configurar la visual. - Usa
ShowDialog()para mostrar la ventana y esperar al usuario.
Conexiones
Sección titulada «Conexiones»Capítulo anterior
Sección titulada «Capítulo anterior»Ver capítulos anteriores
Próximo capítulo
Sección titulada «Próximo capítulo»Capítulo 28: Formulario completo
En el próximo capítulo llenaremos esa ventana vacía con botones, cajas de texto y etiquetas.