Como fazer um formulário de login em Delphi

O MainForm de um aplicativo Delphi é um formulário (janela) que é o primeiro criado no corpo principal do aplicativo. Se você precisar implementar algum tipo de autorização para o seu aplicativo Delphi, convém exibir uma caixa de diálogo de login / senha antes que o formulário principal seja criado e exibido ao usuário. Em resumo, a idéia é criar, exibir e destruir a caixa de diálogo "login" antes de criar o formulário principal.

O Delphi MainForm

Quando um novo projeto Delphi é criado, "Form1" automaticamente se torna o valor da propriedade MainForm (do diretório global Inscrição objeto). Para atribuir um formulário diferente à propriedade MainForm, use a página Formulários do Projeto> Opções caixa de diálogo em tempo de design. Quando o formulário principal é fechado, o aplicativo é encerrado.

Caixa de diálogo Login / Senha

Vamos começar criando a forma principal do aplicativo. Crie um novo projeto Delphi contendo um formulário. Este formulário é, por design, o formulário principal.

Se você alterar o nome do formulário para "TMainForm" e salvar a unidade como "main.pas", o

instagram viewer
código fonte do projeto se parece com isso (o projeto foi salvo como "PasswordApp"):

programa PasswordApp;
usa
Formulários,
 a Principal dentro 'main.pas' {MainForm};
{$ R * .res}
 início
 Inscrição. Inicializar;
 Inscrição. CreateForm (TMainForm, MainForm);
 Inscrição. Corre;
 fim.

Agora, adicione um segundo formulário ao projeto. Por design, o segundo formulário adicionado é listado na lista "Criar formulários automaticamente" na caixa de diálogo Opções do projeto.

Nomeie o segundo formulário "TLoginForm" e remova-o da lista "Criação automática de formulários". Salve a unidade como "login.pas".

Adicione um rótulo, edição e botão no formulário, seguido por um método de classe para criar, mostrar e fechar a caixa de diálogo de login / senha. O método "Execute" retorna true se o usuário digitou o texto correto na caixa de senha.

Aqui está o código fonte completo:

unidade Conecte-se;
interface
 usa
 Windows, Mensagens, SysUtils, Variantes, Classes,
 Gráficos, controles, formulários, caixas de diálogo, StdCtrls;
 tipo
 TLoginForm = classe(TForm)

LogInButton: TButton;
pwdLabel: TLabel;
passwordEdit: TEdit;
procedimento LogInButtonClick (Sender: TObject);

função publicclass Executar: booleano;fim;
implementação{$ R * .dfm}
função de classe TLoginForm. Executar: booleano;começar com TLoginForm. Crio(nada) dotry
 Resultado: = ShowModal = mrOk;
 finalmente
 Livre;
 fim; fim;
procedimento TLoginForm. LogInButtonClick (Sender: TObject); beginif passwordEdit. Texto = 'delphi' então
 ModalResult: = mrOK
 outro
 ModalResult: = mrAbort;
 fim;
fim. 

O método Execute cria dinamicamente uma instância do TLoginForm e a exibe usando o ShowModal método. ShowModal não retorna até que o formulário seja fechado. Quando o formulário é fechado, ele retorna o valor do ModalResult propriedade.

O manipulador de eventos On Logick "LogInButton" atribui "mrOk" à propriedade ModalResult se o usuário tiver digitado a senha correta (que é "delphi" no exemplo acima). Se o usuário tiver fornecido uma senha incorreta, ModalResult será definido como "mrAbort" (pode ser qualquer coisa, exceto "mrNone").

Definir um valor para a propriedade ModalResult fecha o formulário. Execute retorna true se ModalResult for igual a "mrOk" (se o usuário tiver digitado a senha correta).

Não crie MainForm antes do login

Agora você só precisa garantir que o formulário principal não seja criado se o usuário não fornecer a senha correta.

Veja como o código-fonte do projeto deve ficar:

 programa PasswordApp;
usa
Formulários,
main em 'main.pas' {MainForm},
faça o login em 'login.pas' {LoginForm};
 {$ R * .res}
 beginif TLoginForm. Executar então comece
 Inscrição. Inicializar;
 Inscrição. CreateForm (TMainForm, MainForm);
 Inscrição. Corre;
 endelsebegin
 Inscrição. MessageBox ('Você não está autorizado a usar o aplicativo. A senha é "delphi". ',' Aplicativo protegido por senha Delphi ');
 fim; fim.

Observe o uso do se então mais para determinar se o formulário principal deve ser criado. Se "Executar" retornar falso, MainForm não será criado e o aplicativo será encerrado sem iniciar.

instagram story viewer