Fórum Form de login #457
14/11/2008
0
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
Curtir tópico
+ 0Posts
15/11/2008
Guinther Pauli
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
15/11/2008
Guinther Pauli
Gostei + 0
16/11/2008
Carlos Faria
[#VIDEO-17#]
Gostei + 0
16/11/2008
Carlos Faria
Gostei + 0
16/11/2008
Carlos Faria
[#VIDEO-17#]
Gostei + 0
17/11/2008
Guinther Pauli
Gostei + 0
17/11/2008
Guinther Pauli
Gostei + 0
17/11/2008
Carlos Faria
Gostei + 0
18/11/2008
Guinther Pauli
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
19/11/2008
Guinther Pauli
Gostei + 0
19/11/2008
Guinther Pauli
Gostei + 0
20/11/2008
Guinther Pauli
Gostei + 0
20/11/2008
Guinther Pauli
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)