Delphi/Lazarus: Resultado de ShowModal
Consejo de Stefan Trost | 28/02/2024 a las 22:36
ShowModal muestra una ventana y espera hasta que se cierre. Hasta el cierre, no podrás interactuar con ninguna otra ventana de la aplicación. Lo que muchos no saben: puede definir un valor de resultado al cerrar el formulario ShowModal, que luego podrá evaluar cómodamente en su programa.
Por ejemplo, para comprobar en qué botón ha hecho clic el usuario.
Ejemplo
Echemos un vistazo a un ejemplo sencillo que demuestra esto. Nuestro primer formulario es Form1 y queremos mostrar una segunda ventana modal (Form2) usando ShowModal.
En Form2 hemos colocado dos botones a los que les hemos asignado el siguiente código:
procedure TForm2.Button1Click(Sender: TObject); begin ModalResult := 1; end; procedure TForm2.Button2Click(Sender: TObject); begin ModalResult := 2; end;
En Form1, mostramos este formulario con ShowModal:
procedure TForm1.Button1Click(Sender: TObject); var k: integer; begin // Example 1 k := Form2.ShowModal; if k = 1 then ShowMessage('¡Se hizo clic en el botón 1!'); if k = 2 then ShowMessage('¡Se hizo clic en el botón 2!'); // Example 2 if Form2.ShowModal = 1 then begin ShowMessage('¡Se hizo clic en el botón 1!'); end; end;
El valor que le hemos asignado a ModalResult en los procedimientos ButtonClick es el resultado de la llamada ShowModal. Al mismo tiempo que configuramos ModalResult en un valor distinto de cero, el formulario se cierra automáticamente.
En el ejemplo, en el código de Form2, configuramos ModalResult en 1 con Button1 y en 2 con Button2. Entonces, podemos verificar en el código de Form1 en qué botón se hizo clic en Form2 y podemos mostrar los mensajes correspondientes para nuestro ejemplo.
Botones de ModalResult
Además de este método, también es posible aplicar directamente uno de los ModalResults estándar a nuestros botones. Para esto, los botones tienen la propiedad "ModalResult" que podemos establecer (por ejemplo a través del Inspector de Objetos) en mrOK, mrCancel, mrYes o mrNo como ejemplo.
Si hemos preparado un botón de esta forma, podemos recuperar el resultado de la siguiente manera:
if Form2.ShowModal = mrOk then begin ShowMessage('¡Se hizo clic en el botón con mrOk!'); end;
Entonces, si un usuario ha hecho clic en el botón con la propiedad ModalResult = mrOK, el formulario respectivo se cierra automáticamente y automáticamente nos devuelve mrOk como resultado. Y esto sin que tengamos que cambiar ninguna otra propiedad del botón ni asignar ningún evento o código al botón. Además, podemos ver en el valor de retorno de ShowModal en qué botón hizo clic el usuario.
Sobre el Autor
Puede encontrar software de Stefan Trost en la pagina es.sttmedia.com. ¿Necesita un software individual según sus propios requisitos? Escribenos: es.sttmedia.com/contacto
Ver Perfil
Temas Relacionados
PHP: Guardar Resultado de MySQL en Array
Información | 0 Comentarios
Script Batch: Apagar Computadora Windows
Tutorial | 2 Comentarios
Convertir los Valores de Color RGB, CMYK, CMY, HSV, TColor y XYZ
Tutorial | 0 Comentarios
VirtualBox: Cambiar la Fecha y la Hora
Tutorial | 10 Comentarios
Poner Windows via Script en Hibernación o Modo de Suspensión
Tutorial | 0 Comentarios
Lazarus: Cargar Archivo como Array de Bytes y Guardar Array de Bytes como Archivo
Tutorial | 0 Comentarios
Delphi/Lazarus: Mostrar Array de Bytes como Cadena de Valores HEX
Consejo | 0 Comentarios
Aviso Importante
Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.
Participar
Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.