Cómo crear, usar y cerrar formularios en Delphi

En Delphi, cada proyecto tiene al menos una ventana: la ventana principal del programa. Todas las ventanas de una aplicación Delphi están basadas en objetos TForm.

Formar

Los objetos de formulario son los bloques de construcción básicos de una aplicación Delphi, las ventanas reales con las que un usuario interactúa cuando ejecuta la aplicación. Los formularios tienen sus propias propiedades, eventos y métodos con los que puede controlar su apariencia y comportamiento. Un formulario es en realidad un componente de Delphi, pero a diferencia de otros componentes, un formulario no aparece en la paleta de componentes.

Normalmente creamos un objeto de formulario iniciando una nueva aplicación (Archivo | Nueva aplicación). Este formulario recién creado será, por defecto, el formulario principal de la aplicación: el primer formulario creado en tiempo de ejecución.

Nota: Para agregar un formulario adicional al proyecto Delphi, seleccione Archivo | Nuevo formulario.

Nacimiento

OnCreate
El evento OnCreate se activa cuando se crea un TForm por primera vez, es decir, solo una vez. La declaración responsable de crear el formulario está en la fuente del proyecto (si el formulario está configurado para ser creado automáticamente por el proyecto). Cuando se crea un formulario y su propiedad Visible es True, se producen los siguientes eventos en el orden indicado: OnCreate, OnShow, OnActivate, OnPaint.

Debería usar el controlador de eventos OnCreate para hacer, por ejemplo, tareas de inicialización como asignar listas de cadenas.

Cualquier evento creado en el evento OnCreate debe ser liberado por el evento OnDestroy.

 OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint ... 

En el programa
Este evento indica que se está mostrando el formulario. Se llama a OnShow justo antes de que un formulario sea visible. Además de los formularios principales, este evento ocurre cuando establecemos la propiedad Visible de los formularios en True o llamamos al método Show o ShowModal.

OnActivate
Este evento se llama cuando el programa activa el formulario, es decir, cuando el formulario recibe el foco de entrada. Use este evento para cambiar el control que realmente se enfoca si no es el deseado.

OnPaint, OnResize
Los eventos como OnPaint y OnResize siempre se llaman después de que se crea inicialmente el formulario, pero también se llaman repetidamente. OnPaint ocurre antes de pintar cualquier control en el formulario (úselo para pintar de forma especial en el formulario).

Vida

El nacimiento de una forma no es tan interesante como su vida y muerte pueden ser. Cuando se crea su formulario y todos los controles están esperando que se manejen los eventos, el programa se ejecuta hasta que alguien intenta cerrar el formulario!

Muerte

Una aplicación controlada por eventos deja de ejecutarse cuando todos sus formularios están cerrados y no se está ejecutando ningún código. Si aún existe un formulario oculto cuando se cierra el último formulario visible, su aplicación parecerá haber finalizado (porque no hay formularios visibles), pero de hecho continuará ejecutándose hasta que se cierren todos los formularios ocultos. Solo piense en una situación en la que el formulario principal se oculta temprano y todos los demás formularios están cerrados.

… OnCloseQuery -> OnClose -> OnDeactivate -> OnHide -> OnDestroy 

OnCloseQuery
Cuando intentamos cerrar el formulario utilizando el método Cerrar o por otros medios (Alt + F4), se llama al evento OnCloseQuery. Por lo tanto, el controlador de eventos para este evento es el lugar para interceptar el cierre de un formulario y evitarlo. Usamos OnCloseQuery para preguntar a los usuarios si están seguros de que realmente desean que se cierre el formulario..

 procedimiento TForm1.FormCloseQuery (Remitente: TObject; var CanClose: booleano);

empezar

   Si MessageDlg ('¿Realmente cierra esta ventana?', MtConfirmation, [mbOk, mbCancel], 0) = mrCancel luego CanClose: = falso;

final; 

Un controlador de eventos OnCloseQuery contiene una variable CanClose que determina si un formulario puede cerrarse. El controlador de eventos OnCloseQuery puede establecer el valor de CloseQuery en False (a través del parámetro CanClose), abortando el método Close.

OnClose
Si OnCloseQuery indica que el formulario debe cerrarse, el evento OnClose se llama.

El evento OnClose nos brinda una última oportunidad para evitar que se cierre el formulario. El controlador de eventos OnClose tiene un parámetro Action, con los siguientes cuatro valores posibles:

  • caNone. No se permite cerrar el formulario. Al igual que si hemos configurado CanClose en False en OnCloseQuery.
  • caHide. En lugar de cerrar el formulario, lo ocultas.
  • caFree. El formulario está cerrado, por lo que su memoria asignada es liberada por Delphi.
  • minimiza. El formulario se minimiza, en lugar de cerrarse. Esta es la acción predeterminada para formularios secundarios MDI. Cuando un usuario cierra Windows, se activa el evento OnCloseQuery, no el OnClose. Si desea evitar que Windows se cierre, coloque su código en el controlador de eventos OnCloseQuery, por supuesto, CanClose = False no hará esto.

OnDestroy
Después de que se haya procesado el método OnClose y se cierre el formulario, se llama al evento OnDestroy. Use este evento para operaciones opuestas a las del evento OnCreate. OnDestroy se usa para desasignar objetos relacionados con el formulario y liberar la memoria correspondiente.

Cuando se cierra el formulario principal de un proyecto, la aplicación finaliza.