Tela de Senha
04/02/2003
0
Estou desenvolvendo um sistema em Delphi 5, e estou fazendo uma tela de senha e Usuario, porem nao sei como faco para que esta tela abra antes do menu Principal, esta tela de senha da as prioridades de acesso ou seja para cada pessoa é pré cadastrado seus acessos, mas o problema é que nao consigo fazer com que esta tela de senha apareca antes do Menu Principal.
Grato. :roll:
Jricardop.cabral
Posts
04/02/2003
Dantonds
Form Principal :
unit Principal_Form;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TfrmPrincipal = class(TForm)
btnFechar: TBitBtn;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnFecharClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmPrincipal: TfrmPrincipal;
implementation
uses Senha_Form;
{$R *.DFM}
procedure TfrmPrincipal.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree; // libera o form da memória
end;
procedure TfrmPrincipal.btnFecharClick(Sender: TObject);
begin
Close; // Fecha o Form
end;
procedure TfrmPrincipal.FormCreate(Sender: TObject);
begin
frmSenha := TfrmSenha.Create(self);
frmSenha.ShowModal;
end;
end.
Form de Senha :
unit Senha_Form;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls, Buttons, ExtCtrls;
type
TfrmSenha = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
edUsuario: TEdit;
edSenha: TEdit;
Panel1: TPanel;
btnOk: TBitBtn;
btnCancela: TBitBtn;
tbSenha: TTable;
tbSenhaUSUARIO: TStringField;
tbSenhaSENHA: TStringField;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnOkClick(Sender: TObject);
procedure btnCancelaClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmSenha: TfrmSenha;
iOK: Integer;
implementation
{$R *.DFM}
procedure TfrmSenha.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree; // libera o form da memória
end;
procedure TfrmSenha.btnOkClick(Sender: TObject);
begin
If tbSenha.Locate(´Usuario;Senha´, // verifica nos campos Usuario e Senha
VarArrayOf([edUsuario.Text,edSenha.Text]),[]) Then // se for igual aos digitados na tela
begin
iOK := 625;
Close;
end
else // se não for igual ao da tabela, exibe mensagem de erro
begin
Beep;
ShowMessage(´Nome de usuário e/ou senha Inválido!´);
Application.Terminate; // após mensagem fecha o form de senha
end;
end;
procedure TfrmSenha.btnCancelaClick(Sender: TObject);
begin
Application.Terminate;
end;
procedure TfrmSenha.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if iOK <> 625 then Canclose := False;
end;
end.
Eu uso banco de dados paradox.
Espero ter ajudado.
04/02/2003
Anonymous
1 - na tabela de usuario para cada menu tem uma campo preenchido com S ou N (abilitado ou nao).
2 - criei dois procedimentos(abilita e desabilita)
ex; imaginando o cursor na posicao do usuario que tenta se logar
se campo_arquivo.value=´S´ then menu_arquivo.enabled:=true senao menu_arquivo.enabled:=false;...
o procedimento desabilita é para usuario inexistente desabilita tudo e mostra uma mensagem de erro.
3 - na hora que o usuario precionar o botao entrar eu faco tres coisas
3.1 procuro se o usuario existe
3.2 verifico se a senha esta correta
3.3 mando abilitar
4 - o mais importante, para a tela aparecer antes do Form Principal
coloque no Onshow FrmSenha.showmodal;(o principal se aparecera depois que este form for fechado).
5 - Cuidados.
5.1 o usuario pode precionar Alt+F4 e entrar sem o programa veirificar as premissoes no OnKeydown do form
if (shift=ssAlt) and (key=vk_F4) then
key:=#0//isso pode resolver\\
5.2 na verificacao se o usuario nao for permitido mandar encerrar a aplicacao (application.terminate ou somente Halt;).
na verdade so nao te mando o fonte do meu programa por que nao esta aqui mas qualquer duvida posso tentar por e-mail.
Boa Sorte!
Gean Carlos.
04/02/2003
Anonymous
Clique aqui para fazer login e interagir na Comunidade :)