Form de login

14/11/2008

Boa noite galera   Esse e facil demais   É o seguinte eu criei um form de login , que verifica usuario e senha , se o usuario e verdadeiro ele abre o form principal e some o frmlogin , se a verificao nao é valida ,mensagem para usuario ,"Usuario ou senha incorretos" Ate ai tudo beleza o problema ta em sumir o frmlogin eu ja tentei todos os metodos que conheco e nao consegui ate agora , vi ate um exemplo do luciano pimenta feito em delphi 7 tentei mais nao funcionou   na funcao verificaUsuario eu trago Usuario , senha e o id_usuario e preciso jogar esse id_usuario do tipo integer numa variavel global para nos forms de cadastro e update mandar junto o usuario logado !!           ja tentei das seguintes formas   project /option deixei apenas os datamodule para ser criado e o frmlogin   se a verificacao for verdadeiro   try
  if frmPrincipal = nil  then
  frmPrincipal := TfrmPrincipal.Create(self) ;
  frmPrincipal.ShowModal ;
finally
    FreeAndNil(frmPrincipal);
end;   frmlogin.close ;   o principal abre mais o frmlogin fica escondido atraz   Eu preciso fazer esse frmlogin desaparecer se a verificao for verdadeira , e tambem preciso inserir numa variavel global para ser usuda por todo o projeot o id_usuario , lembrem se que eu sou meio devagar no delphi mesmo rs   essa e function verificaUsuario   with DMBUSCA.cdsVerificaUsuario do ; DMBUSCA.cdsVerificaUsuario.Close ;
DMBUSCA.cdsVerificaUsuario.Params [0].AsString := UpperCase(aUsuario);
DMBUSCA.cdsVerificaUsuario.Params [1].AsString := UpperCase(Asenha);
DMBUSCA.cdsVerificaUsuario.Open ;
Result := (DMBUSCA.cdsVerificaUsuario.RecordCount > 0) ;
comandtext do clientdataset select usuario,senha from usuario Where usuario =:usuario and senha =:senha   estou usando um sqlconnection , um datasetprovider com a propriedade allowcomandtext setada para true e varios clintdataset no datamodule de busca que eu criei         botao logar   if dmFuncoesSystem.VerificaSenha (edtLogin.Text,edtSenha.Text )  then
begin
dmFuncoesSystem.AbreForm(TfrmPrincipal,frmPrincipal);
close ;
  procedure abre form   Application.createform (Aclasseform ,aform ) ;
try
   aform.showmodal ; finally
   FreeAndNil(aform) ; end;      
Carlos Faria

Carlos Faria

Curtidas 0

Respostas

Guinther Pauli

Guinther Pauli

14/11/2008

CARLOS REGIS DE FARIA

País: Brasil
Estado: MG Opa Carlos,   Abaixo seu chamado com os comentários, no código para ficar mais fácil para você,      
Boa noite galera   Esse e facil demais   É o seguinte eu criei um form de login , que verifica usuario e senha , se o usuario e verdadeiro ele abre o form principal e some o frmlogin , se a verificao nao é valida ,mensagem para usuario ,"Usuario ou senha incorretos" Ate ai tudo beleza o problema ta em sumir o frmlogin eu ja tentei todos os metodos que conheco e nao consegui ate agora , vi ate um exemplo do luciano pimenta feito em delphi 7 tentei mais nao funcionou   na funcao verificaUsuario eu trago Usuario , senha e o id_usuario e preciso jogar esse id_usuario do tipo integer numa variavel global para nos forms de cadastro e update mandar junto o usuario logado !!       ja tentei das seguintes formas   project /option deixei apenas os datamodule para ser criado e o frmlogin   se a verificacao for verdadeiro   try
  if frmPrincipal = nil  then
  frmPrincipal := TfrmPrincipal.Create(self) ;
  frmPrincipal.ShowModal ;
finally
    FreeAndNil(frmPrincipal);
end;   frmlogin.close ;   Faça o seguinte, defina o formulário principal, para ser o MainForm da aplicação, ou seja o primeiro a aparecer, la em Project Options onde vc foi na aba Forms. Deixe o formulário de login auto-criado, Certo? Feito isso no evento OnShow do Formulário principal faça o seguinte. FrmFormLogin.ShowModal;   Simples mesmo, com isso o sistema entende da seguinte forma. O principal é o que deve ficar aparecendo sempre enquanto a aplicação estiver rodando, e ao ser chamado, (por primeiro) ele mostra o form de login, ele so vai aparecer mesmo qdo vc der um close no form de login.   o principal abre mais o frmlogin fica escondido atraz   Eu preciso fazer esse frmlogin desaparecer se a verificao for verdadeira , e tambem preciso inserir numa variavel global para ser usuda por todo o projeot o id_usuario , lembrem se que eu sou meio devagar no delphi mesmo rs   essa e function verificaUsuario   with DMBUSCA.cdsVerificaUsuario do ; DMBUSCA.cdsVerificaUsuario.Close ;
DMBUSCA.cdsVerificaUsuario.Params [0].AsString := UpperCase(aUsuario);
DMBUSCA.cdsVerificaUsuario.Params [1].AsString := UpperCase(Asenha);
DMBUSCA.cdsVerificaUsuario.Open ;
Result := (DMBUSCA.cdsVerificaUsuario.RecordCount > 0) ; comandtext do clientdataset select usuario,senha from usuario Where usuario =:usuario and senha =:senha   estou usando um sqlconnection , um datasetprovider com a propriedade allowcomandtext setada para true e varios clintdataset no datamodule de busca que eu criei   Nesse form vc pode declarar a variável Global ID_usuario e passar para ela o valor do ID do usuário exemplo:   Id_Usuario := DMBusca.CdsVerificaUsuarioUsuario.value; (ao invés de value vc pode utilizar o tipo que definiu na tabela se for Integer = AsInteger); Lembrando que devemos evitar ao máximo o .value, apesar de ser fácil de usar pois aceita qualquer coisa é um tipo Variant e consome muita memória para fazer as conversões internas.      botao logar   if dmFuncoesSystem.VerificaSenha (edtLogin.Text,edtSenha.Text )  then
begin
dmFuncoesSystem.AbreForm(TfrmPrincipal,frmPrincipal);
close ;   procedure abre form   Application.createform (Aclasseform ,aform ) ;
try
   aform.showmodal ; finally
   FreeAndNil(aform) ; end;     ·       Acima eu coloquei em vermelho uma dica de como passar o valor do ID usuário para a variável ID_usuario e também como trabalhar da maneira correta com o form de Login. ·       Para fechar o form de login tranqüilo. Use CLOSE;  Mas não o destrua, ou seja não use Release ou Free no evento OnClose, vamos precisar dele para controlar a outra parte que vc precisa. ·       Para armazenas o ID do usuário para que nos outros forms vc possa utilizar esse ID, vc  faça o seguinte, escolha entre o form de usuário, ou o principal ou ainda o DataModule e declare a variável ID_Usuario como Global, pelo que entendi esses 3 forms ficam em memória o tempo todo certo? Como vc esta usando o Try Finally e ShowModal enquanto o form estiver sendo exibido ele existe. Importante , vc precisa declarar o form que vc escolhe para ter a variável GLOBAL ID_usuario, na clausula USES de todos os forms que precisarem utilizar essa variável. ·       Pergunto a vc o formulário principal fica sempre aberto? Ou seja vc criar o principal e depois vai abrindo os de cadastro que precisa certo? Se for isso mesmo, perfeito. ·       Eu uso em minhas aplicações exatamente esse modelo, tenho o form de login que possui uma variável global, todos os forms que eu preciso utilizar essa variável, faço com que eles usem o form de login. Funciona perfeitamente. Qualquer dúvida que tenha ficado, estamos a disposição. abs    
GOSTEI 0
Guinther Pauli

Guinther Pauli

14/11/2008

Carlos,   Mais algum dúvida ?     Estamos aguardando seu retorno,     abs
GOSTEI 0
Carlos Faria

Carlos Faria

14/11/2008



[#VIDEO-17#]
GOSTEI 0
Carlos Faria

Carlos Faria

14/11/2008

ue nao sei o que aconteceu mais eu mandei dois videos para ai mostrando o problema passo a passo , chegou para mim respondido por carlos e retornou a mesma coisa que eu mandei , algo errado ?
GOSTEI 0
Carlos Faria

Carlos Faria

14/11/2008



[#VIDEO-17#]
GOSTEI 0
Guinther Pauli

Guinther Pauli

14/11/2008

Carlos,   Estamos aguardando seu retorno para que possamos fechar esse chamado,   abs    
GOSTEI 0
Guinther Pauli

Guinther Pauli

14/11/2008

Carlos,   Podemos encerrar esse chamado ?   abs
GOSTEI 0
Carlos Faria

Carlos Faria

14/11/2008

na boa eu nao entendi como captuar o id_usuario e transformar ele em variavel global se vc tiver um exemplo ai um video ajuda demais
GOSTEI 0
Guinther Pauli

Guinther Pauli

14/11/2008

Olá Carlos,   Vamos lá.    Para vc capturar o ID do usuário, faça o seguinte. A função abaixo retorna o ID e o nome do usuário certo? with DMBUSCA.cdsVerificaUsuario do ;  begin   DMBUSCA.cdsVerificaUsuario.Close ;
  DMBUSCA.cdsVerificaUsuario.Params [0].AsString := UpperCase(aUsuario);
  DMBUSCA.cdsVerificaUsuario.Params [1].AsString := UpperCase(Asenha);
  DMBUSCA.cdsVerificaUsuario.Open ; End; Faça o seguinte, abaixo estou mostrando o fonte de uma nova unit, estou mostrando onde vc deve declarar a variável global nome ID_USUARIO, para que vc grave o ID usuário retornado da função acima. Agora para passar o valor para essa variável faça isso: ID_USUARIO := DMBUSCA.cdsVerificaUsuarioNomeDoCampoIDUsuarioNaTabela.AsInteger; Feito isso a variável ID_USUARIO esta em memória com o ID do usuário, sempre que vc precisar utilizála em outro form por exemplo, faça o seguinte. Digamos que vc esta no formulário de clientes e quer gravar o ID usuário na tabela de clientes, para saber quem fez a inserção.   No formulário de clientes na função que vc salva os dados do cliente no banco de dados vc deve fazer o seguinte. TblCliente.NomeCampoIdUsuarioNaTabela.AsInteger := ID_USUARIO; // esse ID_USUARIO é a variável criada na tela de LOGIN q permanece em memória, pois vc não destruiu o formulário de login, so fechou ele (Close). OK? Para que esse ID_Usuario, fique disponível, vc precisa no formulário de clientes vc precisa esta usando ele no formulário de cliente, para isso vc deve declarar ele na clausula Uses do formulário de clientes, como mostrado abaixo. Imagine que a unit1 mostrada abaixo é o seu formulário de clientes. unit FormulariodeClientes interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs; type   TForm1 = class(TForm)   private     { Private declarations }   public     { Public declarations }   end; var   Form1: TForm1; implementation uses CADPreview, NomeDaUnitDoFormdeLogin; {$R *.dfm} end.     unit FormulariodeLogin interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs; type   TForm1 = class(TForm)   private     { Private declarations }   public     { Public declarations }   end; var   Form1: TForm1;   Declare aqui uma nova variável. ID_USUARIO: Integer; implementation {$R *.dfm} end.   Caso vc não tenha conseguido entender ainda, por favor entre em contato. abs  
GOSTEI 0
Guinther Pauli

Guinther Pauli

14/11/2008

Carlos, Bom dia !!   Mais alguma dúvida ?  Podemos encerrar o chamado ?   abs
GOSTEI 0
Guinther Pauli

Guinther Pauli

14/11/2008

Carlos,   Continuamos aguardando seu retorno,   abs
GOSTEI 0
Guinther Pauli

Guinther Pauli

14/11/2008

Carlos,   Mais alguma dúvida sobre esse chamado ?   abs    
GOSTEI 0
Guinther Pauli

Guinther Pauli

14/11/2008

Carlos,   Como não retornou mais nenhuma dúvida sobre o assunto,   Estamos considerando o chamado encerrado,   Qualquer coisa estamos a disposição,   abs
GOSTEI 0
POSTAR