Cómo hacer un formulario de inicio de sesión de Delphi

MainForm de una aplicación Delphi es un formulario (ventana) que es el primero creado en el cuerpo principal de la aplicación. Si necesita implementar algún tipo de autorización para su aplicación Delphi, es posible que desee mostrar un diálogo de inicio de sesión / contraseña antes de que el formulario principal se cree y se muestre al usuario. En resumen, la idea es crear, mostrar y destruir el diálogo de "inicio de sesión" antes de crear el formulario principal.

El Delphi MainForm

Cuando se crea un nuevo proyecto de Delphi, "Form1" se convierte automáticamente en el valor de la propiedad MainForm (de la propiedad global Solicitud objeto). Para asignar un formulario diferente a la propiedad MainForm, use la página Formularios del Proyecto> Opciones cuadro de diálogo en tiempo de diseño. Cuando se cierra el formulario principal, la aplicación finaliza.

Diálogo de inicio de sesión / contraseña

Comencemos creando la forma principal de la aplicación. Cree un nuevo proyecto de Delphi que contenga un formulario. Este formulario es, por diseño, el formulario principal.

instagram viewer

Si cambia el nombre del formulario a "TMainForm" y guarda la unidad como "main.pas", el código fuente del proyecto se ve así (el proyecto se guardó como "PasswordApp"):

programa PasswordApp;
usos
Formularios,
 principal en 'main.pas' {MainForm};
{$ R * .res}
 empezar
 Solicitud. Inicializar;
 Solicitud. CreateForm (TMainForm, MainForm);
 Solicitud. Correr;
 final.

Ahora, agregue un segundo formulario al proyecto. Por diseño, el segundo formulario agregado se enumera en la lista "Crear formularios automáticamente" en el cuadro de diálogo Opciones de proyecto.

Asigne un nombre al segundo formulario "TLoginForm" y elimínelo de la lista "Crear formularios automáticamente". Guarde la unidad como "login.pas".

Agregue una etiqueta, edición y botón en el formulario, seguido de un método de clase para crear, mostrar y cerrar el diálogo de inicio de sesión / contraseña. El método "Ejecutar" devuelve verdadero si el usuario ha ingresado el texto correcto en el cuadro de contraseña.

Aquí está el código fuente completo:

unidad iniciar sesión;
interfaz
 usos
 Windows, Mensajes, SysUtils, Variantes, Clases,
 Gráficos, controles, formularios, cuadros de diálogo, StdCtrls;
 tipo
 TLoginForm = clase(TForm)

LogInButton: TButton;
pwdLabel: TLabel;
contraseñaEditar: TEdit;
procedimiento LogInButtonClick (Remitente: TObject);

función publicclass Ejecutar: boolean;final;
implementación{$ R * .dfm}
función de clase TLoginForm. Ejecutar: boolean;empezar con TLoginForm. Crear(nulo) dotry
 Resultado: = ShowModal = mrOk;
 finalmente
 Gratis;
 final; final;
procedimiento TLoginForm. LogInButtonClick (Remitente: TObject); beginif passwordEdit. Texto = 'delphi' luego
 Resultado modal: = mrOK
 más
 Resultado modal: = mrAbort;
 final;
final. 

El método de ejecución crea dinámicamente una instancia del TLoginForm y lo muestra usando el ShowModal método. ShowModal no regresa hasta que se cierra el formulario. Cuando se cierra el formulario, devuelve el valor de Resultado modal propiedad.

El controlador de eventos "LogInButton" OnClick asigna "mrOk" a la propiedad ModalResult si el usuario ha ingresado la contraseña correcta (que es "delphi" en el ejemplo anterior). Si el usuario ha proporcionado una contraseña incorrecta, ModalResult se establece en "mrAbort" (puede ser cualquier cosa excepto "mrNone").

Establecer un valor para la propiedad ModalResult cierra el formulario. Execute devuelve true si ModalResult es igual a "mrOk" (si el usuario ha ingresado la contraseña correcta).

No cree MainForm antes de iniciar sesión

Ahora solo necesita asegurarse de que el formulario principal no se crea si el usuario no pudo proporcionar la contraseña correcta.

Así es como debería verse el código fuente del proyecto:

 programa PasswordApp;
usos
Formularios,
main en 'main.pas' {MainForm},
inicie sesión en 'login.pas' {LoginForm};
 {$ R * .res}
 comenzar TLoginForm. Ejecutar entonces comenzar
 Solicitud. Inicializar;
 Solicitud. CreateForm (TMainForm, MainForm);
 Solicitud. Correr;
 endelsebegin
 Solicitud. MessageBox ('No está autorizado para usar la aplicación. La contraseña es "delphi". ',' Aplicación Delphi protegida con contraseña ');
 final; final.

Tenga en cuenta el uso de la si entonces más bloque para determinar si se debe crear el formulario principal. Si "Ejecutar" devuelve falso, MainForm no se crea y la aplicación finaliza sin iniciarse.

instagram story viewer