LOGIN COMPLETO

 

Veremos aqui uma das mais importantes áreas de todo sistema e sua aplicabilidade que é o a tela de acesso ao sistema, o login. Nele estão baseados todos os métodos de segurança fundamentais ao sistema, desde a proteção contra invasões e até a confiabilidade aos níveis de acesso por cada usuário.

Veremos um passo-a-passo de criação e implementação, para facilitar a compreensão da dimensão e importância do login em um sistema, seja ele para sistemas simples até para sistemas comerciais de grande porte, contando ainda com a estética, que faz muita diferença no momento de sua exibição, ficando elegante sem perder a funcionalidade e segurança do sistema à qual pode ser aplicado.

Começaremos criando o projeto em si, utilizando o Delphi XE (2011), porém não nos esqueçamos de criar um banco demonstrativo com o nome e a senha de nossos usuários, e no Delphi criaremos nosso projeto, para isso abrimos no menu File -> New -> VCL Forms Application – Delphi, lembrando que desde o Delphi 2009 esse é o método de criação de qualquer aplicação Delphi.

 

CRIANDO NOSSO DATA MODULE

Antes de tudo criaremos nossa Data Module, pois ele vai receber nosso banco de dados, iremos então criar um Data Module em File -> New -> Other


Abrirá uma nova tela, e em seu TreeView, selecione a pasta Delphi Files e dentro dele está nosso Data Module

 

Com o Data Module criado, iremos adicionar um SQLConnection  da aba dbExpress, em sua propriedade Name mude para dbConn e na propriedade Driver clique no Ícone  e exibida a propriedade Database iremos setar o caminho do banco de dados, na propriedade LoginPrompt deixe como False e por fim na propriedade Connected deixe como True.

Agora ligaremos os dados de nosso banco, para isso vamos inserir um SQLDataSet  da aba dbExpress, mude seu Name para sdsLogin e SQLConnection iremos setar nosso SQLConnection dbConn e na propriedade CommandText insira a seguinte instrução SQL:

 

SELECT * FROM LOGIN

Feito isso acrescente ao nosso Data Module um DataSetProvider  da aba Data Access, mude seu Name para dspLogin e em DataSet vamos apontar para nosso SQLDataSet   sdsLogin, e por fim vamos adicionar um ClientDataSet da aba Data Access, e mude seu Name para cdsLogin e em seu ProviderName aponte para nosso DataSetProvider, dspLogine por fim na propriedade Active deixe como True.

 

GERANDO A INTERFACE DE ACESSO DO LOGIN

Pronto, já temos nossa conexão com os campos do banco de dados, agora iremos editar as propriedades do formulário de Login, começando pela propriedade Name, que receberá o nome de frmLogin e em sua propriedade Caption receberá o texto LOGIN, agora para darmos um visual mais diferenciado ao nosso formulário nós iremos editar algumas das propriedades do formulário onde criamos nossa tela de login. Ainda em nosso formulário principal mudaremos a propriedade BorderStyle parabsNone, mude também a propriedade Color paraclWhite,e na propriedade Font, vá em suas opções avançadas clicando no ícone  e dentro das propriedades de fonte altere o Name para Calibri, alterando assim a fonte dos textos do formulário, o que dará um visual mais interessante, e finalmente iremos alterar nossa ultima propriedade que atuará em na base deste formulário que é a propriedade Position e modificaremos para poScreenCenter, agora iremos preencher esse formulário, para isso usaremos 1 Panel e 5 Labelsda abaStandard , 2 BitBtns, 2 dbEdits da aba Data Controls, 1 DataSource da aba Data Access, e 1 SQLQuery da aba dbExpress.

Iremos gerar um DataSource e na propriedade Name deixe como dsLogin e em seu DataSet direcione-o ate nosso ClientDataSet, DM.cdsLogin, e no SQLQuery mude seu Name para QUeryLogin e a propriedade SQLConnection setada para nosso dbConn, lembrando que eas units devem ser declaradas para interagirem entre si, para isso use o atalho Alt+F11 para declarar as units que irão se comunicar. No Panel, que irá dar uma trabalhada maior no visual de nosso formulário, e nas propriedades comece pela propriedade Align e ajuste para alClient, pois assim ela tomará todo o campo do formulário, mesmo sendo redimensionado e em BevelInner mude para o estilobvLowered, isso dará um efeito 3D em nosso formulário, deixando-o mais interessante, em BorderStyle deixe como a opção bsSingle, com os 2 Labels e os 2 Edits, iremos interagir com o banco de dados, nos Labels mudaremos a propriedade Name, ficando como lbUsuario e lbSenha e na propriedade Caption mude para USUÁRIO: e SENHA:, nos Edits mudaremos a propriedade Name para edtUsuario e edtSenha, na propriedade CharCase selecione a opção ecUpperCase, porém para ocultarmos a senha para que ela não seja exibida, iremos no Edit edtSenha e na propriedade PasswordChar remova seu conteúdo e insira um asterisco (*), assim, ocultando a senha de cada usuário, e por fim ligar nossos 2 Edits  ao DataSource, no EditedtUsuario e edtSenha na propriedade DataSource dos Edits iremos ligar ao dsLogin e cada um ao seu respectivo DataField, do edtUsuario o Datafield será a tabela com o nome de usuários e o edtSenha respectivamente a nossa tabela de senhas dos usuários, e para finalizar a estruturação lógica do reconhecimento dos campos, vamos inserir um SQLQuery da aba dbExpress, e mude sua propriedade Name para QueryLogin e o SQLConnection indicando o nosso dbConn.

Feito isto agora vamos aos 2 Button, em sua propriedade Name renomearemos para btnCancelar e btnLogin, podemos optar por deixar o botão somente com o texto indicativo ou inserir uma imagem, que irá tornar a aplicação mais intuitiva, se optar pelo texto somente mude a propriedade Caption dos botões para Cancelar e OK, mas se optar por inserir uma imagem, vá até a propriedade Glyph de cada botão e adicione uma imagem à cada botão, lembrando que ele só aceita imagens do tipo BMP, concluída a parte visual, iremos iniciar a codificação dos mesmos.
No botão btnCancelar, dê dois cliques sobre ele e abrirá uma procedure, essa é a procedure principal do objeto, que no caso é executar uma linha de código ao clique do mouse sobre ele, sendo assim, dentro da procedure e da estrutura básica gerada automaticamente pelo Delphi iremos inserir a seguinte linha de comando:

begin
  Application.Terminate;
end;

 

Esse código encerrará o nosso sistema ao clique do mouse, já no botão btnLogin, ao clicarmos no botão executaremos o seguinte código:

var
  sql: AnsiString;
begin
  sql:= 'select * from LOGIN where LOGIN_USUARIO =' + QuotedStr(edtUsuario.Text);
  sql:= sql +' and LOGIN_SENHA =' + QuotedStr(edtSenha.Text);
  QueryLogin.Active:= False;
  QueryLogin.SQL.Clear;
  QueryLogin.SQL.Add(sql);
  QueryLogin.Active:= True;
  if QueryLogin.RecordCount > 0 then

  begin
    tRelogio.Enabled:= True;
    lbSplash.Visible:= True;
    end
  else
  begin
    tRelogio.Enabled:= False;
  end;
  if ((edtUsuario.Text = '')or(edtSenha.Text = '')) then
  begin
    lbInfo.Visible:= True;
    lbInfo.Font.Color:= clRed;
  end;
end;

 

Esta é a estrutura fundamental de nosso login, porém agora vamos utilizar algums métodos de prevenção de preenchimento de dados pelo usuário, evitando assim transtornos com conflito de funções no sistema.

No Label da aba Standard que adicionamos inicialmente, iremos utilizá-la agora, mas primeiramente iremos por regra mudar seu Name para lbInfo e seu Caption para INFORME O USUÁRIO E/OU SENHA!, assim alertando o usuário sobre  devido preenchimento no formulário e dentro do evento OnClick do botão btnLogar inserimos o seguinte código:

 

if ((edtUsuario.Text = '')or(edtSenha.Text = '')) then
  begin
    lbInfo.Visible:= True;
    lbInfo.Font.Color:= clRed;
  end;

 

Obs.: Importante ressaltar que como esse procedimento só terá utilidade na falta de preenchimento de um dos campos, devemos então deixar a propriedade Visible de nosso Label lbInfo como False.

Seguindo esses passos devemos obter um formulário como este:

 

 

CONCLUSÃO

 

Neste artigo visa à segurança com simplicidade e eficácia de um sistema a partir de um controle por usuário cadastrado e senha, seja ele para aplicações simples do dia-a-dia até aplicações de grande porte que envolva a variados setores como os de funcionários, logística, financeira, de dados e registros, a fim de manter a segurança e confiabilidade dentro da aplicação e elevar o nível de qualidade do mesmo.

 

 

Sobre o Autor

Eduardo Massud
Consultor Técnico The Club.

E-mail: suporte@theclub.com.br

The Club - O Maior Clube de programadores do Brasil