Ir para conteúdo
Fórum Script Brasil
  • 0

Sistema de login


ZueRa

Pergunta

Boa tarde pessoal do SB.

Bom, desenvolvi um sistem de login, porém, estou com um problema.

Ao usuário colocar seu login e senha (corretos) o certo seria abrir outro form normalmente.

Mas, ele abre o outro form, só que, este form não minimiza normalmente como os outros, ele vai para o canto esquerdo da minha tela (como se ele estivesse dentro de outro).

Fui no Project >> Options e mudei Main Form: (o form que não está minimizando normalmente). Compilei. Resultado: é aberto direto nele ao invés de passar pela tela de login.

O código é o seguinte:

procedure TfLogin.spdBtOkClick(Sender: TObject);
      begin
        with dmDados.ibQueryLogin do
          begin
            Close;
            SQL.Clear;
            SQL.Append('select * from USUARIO where USUARIO = :usuario and SENHA = :senha');
            ParamByName('usuario').AsString := edLogin.Text;
            ParamByName('senha').AsString := edSenha.Text;
            Open;
            if IsEmpty then
              begin
                Application.MessageBox('Login e/ou senha incorretos!','Goldner', mb_Ok +
                mb_DefButton1 + mb_IconExclamation);
                edLogin.SetFocus;
                Abort;
              end
            else
              begin
                fProgram := TfProgram.Create(application);
                Hide; //******************** já usei o Close, mas, evidentemente ele fecha toda a aplicação, impossibilitando assim seu uso lol
                fProgram.Show;
              end;
          end;
      end;

Alguém pode me ajudar?

Obrigado, Thiago.

Editado por ZueRa
Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0
Ao usuário colocar seu login e senha (corretos) o certo seria abrir outro form normalmente.

Mas, ele abre o outro form, só que, este form não minimiza normalmente como os outros, ele vai para o canto esquerdo da minha tela (como se ele estivesse dentro de outro).

Fui no Project >> Options e mudei Main Form: (o form que não está minimizando normalmente). Compilei. Resultado: é aberto direto nele ao invés de passar pela tela de login.

no Project voce coloca os forms na ordem em que devem abrir ( ou serem chamados )

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Ao usuário colocar seu login e senha (corretos) o certo seria abrir outro form normalmente.

Mas, ele abre o outro form, só que, este form não minimiza normalmente como os outros, ele vai para o canto esquerdo da minha tela (como se ele estivesse dentro de outro).

Fui no Project >> Options e mudei Main Form: (o form que não está minimizando normalmente). Compilei. Resultado: é aberto direto nele ao invés de passar pela tela de login.

no Project voce coloca os forms na ordem em que devem abrir ( ou serem chamados )

abraço

Sim, eu entendi o que quis dizer Jhonas.

Mas, e enquanto ao problema do minimizar que citei?

Alguma idéia?

Link para o comentário
Compartilhar em outros sites

  • 0

Opa

Amigo faz assim, tira o Form de login do AutoCreate.... vai no Menu "Project > View Source"...

faz tipo

project XXX;

uses
  Forms,
...

var
  bLogin: Boolean = False;

begin
  Application.CreateForm(...
  Application.CreateForm(... 
  Application.CreateForm(... 
  Application.CreateForm(... 

  FormdeLogin := TFormdeLogin.Create(nil);
  try
    FormdeLogin.ShowModal;
    bLogin := FormdeLogin.bOK;
  finally
    FormdeLogin.Free;
    FormdeLogin := nil;
  end;

  if not bLogin then
  Application.Terminate else
  Application.Run;

end.
e no Form de login, declare uma variavel em public chamada bOK e faz tipo
public
  bOK: Boolean;

...

procedure TfLogin.spdBtOkClick(Sender: TObject);
begin
  with dmDados.ibQueryLogin do
  begin
    Close;
    SQL.Clear;
    SQL.Append('select * from USUARIO where USUARIO = :usuario and SENHA = :senha');
    ParamByName('usuario').AsString := edLogin.Text;
    ParamByName('senha').AsString := edSenha.Text;
    Open;
    bOK := not isEmpty;
    if isEmpty then
    begin
      Application.MessageBox('Login e/ou senha incorretos!','Goldner', mb_Ok + mb_DefButton1 + mb_IconExclamation);
      edLogin.SetFocus;
    end
    else
    Close;
  end;
end;

abrxx

Editado por Churc
Link para o comentário
Compartilhar em outros sites

  • 0
Opa

Amigo faz assim, tira o Form de login do AutoCreate.... vai no Menu "Project > View Source"...

faz tipo

project XXX;

uses
  Forms,
...

var
  bLogin: Boolean = False;

begin
  Application.CreateForm(...
  Application.CreateForm(... 
  Application.CreateForm(... 
  Application.CreateForm(... 

  FormdeLogin := TFormdeLogin.Create(nil);
  try
    FormdeLogin.ShowModal;
    bLogin := FormdeLogin.bOK;
  finally
    FormdeLogin.Free;
    FormdeLogin := nil;
  end;

  if not bLogin then
  Application.Terminate else
  Application.Run;

end.
e no Form de login, declare uma variavel em public chamada bOK e faz tipo
public
  bOK: Boolean;

...

procedure TfLogin.spdBtOkClick(Sender: TObject);
begin
  with dmDados.ibQueryLogin do
  begin
    Close;
    SQL.Clear;
    SQL.Append('select * from USUARIO where USUARIO = :usuario and SENHA = :senha');
    ParamByName('usuario').AsString := edLogin.Text;
    ParamByName('senha').AsString := edSenha.Text;
    Open;
    bOK := not isEmpty;
    if isEmpty then
    begin
      Application.MessageBox('Login e/ou senha incorretos!','Goldner', mb_Ok + mb_DefButton1 + mb_IconExclamation);
      edLogin.SetFocus;
    end
    else
    Close;
  end;
end;

abrxx

Olá Churc, bom dia.

Fiz exatamente como falou, compilou certinho, sem problemas.

Todavia este pequeno "erro" de minimizar, se assim podemos chamar, não foi acertado.

Continua a mesma coisa.

Caso não tenha entendido o que está rolando vou mandar uma screen:

erro_cfg.jpg

observe como ele está minimizando.

Este é o problema.

Obrigado por hora, Thiago.

Editado por ZueRa
Link para o comentário
Compartilhar em outros sites

  • 0

Humm, estranho...

Brother, a principio eu não sei te dizer o porque disso, não tem como eu emular aqui...

não tenho a menor noção do que pode ser :/

a propriedade FormStyle do form principal ta como fsNormal?

Link para o comentário
Compartilhar em outros sites

  • 0
Humm, estranho...

Brother, a principio eu não sei te dizer o porque disso, não tem como eu emular aqui...

não tenho a menor noção do que pode ser :/

a propriedade FormStyle do form principal ta como fsNormal?

Olá Churc.

Está sim como fsNormal.

Mandei uma MP para ti, se puder dar uma olhada fico grato,

Thiago.

Link para o comentário
Compartilhar em outros sites

  • 0
Todavia este pequeno "erro" de minimizar, se assim podemos chamar, não foi acertado.

O delphi minimiza os forms dessa maneira mesmo .... então a jogada é colocar o form do Menu na frente dos outros que ficarão minimizados e não ficarão aparecendo.

Ai voce pergunta ... como ter acesso aos forms minimizados para faze-los voltar ao normal ?

No evento OnMouseDown voce coloca este código .... coloque o nome das janelas que ficarão minimizadas

Ao clicar com o mouse na tela do Menu, os forms minimizados aparecerão na tela do Menu onde voce escolhe qual dos forms voltará ao normal

procedure TFMenu.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin

 SetWindowPos(FMovimento.handle, HWND_NOTOPMOST, FMovimento.Left, FMovimento.Top,FMovimento.Width, FMovimento.Height, 0); // HWND_NOTOPMOST normal

 SetWindowPos(FCadmov.handle, HWND_NOTOPMOST, FCadmov.Left, FCadmov.Top,FCadmov.Width, FCadmov.Height, 0); // HWND_NOTOPMOST normal


end;

OBs: Caso voce queira que um form minimizado fique na barra de tarefas, então voce terá que instalar um componente chamado Minimizer

http://www.zecos.com/delphi/components.html

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

@Zueira,

o código que voce me mandou ta bem confuso, não ta com nada do que te passamos aqui...

Seguinte, vai no menu Project > Options e em Forms você tira o form Fprincipal, que alias é o form de login e não deveria estar como principal, tira ele do AutoCreate...

No código que voce mandou, o Form de Login que está como principal do programa...

Coloca o Form FProgram como primeiro da Lista em Auto Create Forms...

Depois vai no menu Project > View Source e cole isto...

program P_principal;

uses
  Forms,
  U_principal in 'U_principal.pas' {Fprincipal},
  U_program in 'U_program.pas' {Fprogram},
  U_dmdados in 'U_dmdados.pas' {Dmdados: TDataModule},
  U_consurl in 'U_consurl.pas' {Fconsurl},
  U_consloginsenha in 'U_consloginsenha.pas' {Fconsloginsenha},
  U_conssenha in 'U_conssenha.pas' {Fconssenha};

var
  bLogin: Boolean = False;

{$R *.res}

begin
  Application.Initialize;
  Application.Title := '';
  Application.CreateForm(TFprogram, Fprogram);
  Application.CreateForm(TDmdados, Dmdados);
  Application.CreateForm(TFconsurl, Fconsurl);
  Application.CreateForm(TFconsloginsenha, Fconsloginsenha);
  Application.CreateForm(TFconssenha, Fconssenha);

  FPrincipal := TFPrincipal.Create(nil);

  //e aqui como expliquei acima no Post #4

  if bLogin then
  Application.Run else
  Application.Terminate;
end.

Não esqueça do Post #4 logo acima...

ali expliquei como fazer o lance do Login no Form de Login... (bOK em public e tal...)

é que não tem como eu emular aqui, to no trabalho também e é difícil pegar outros códigos e fazer rodar certinho, por causa do banco de dados e tal...

entendeu?

Editado por Churc
Link para o comentário
Compartilhar em outros sites

  • 0

Consegui resolver.

Usei a dica do amigo Jhonas para usar o componente MinModal. Funcionou perfeitamente ao que precisava.

E a dica do Churc para acertar umas coisas que tinham passado em branco.

Obrigado aos dois pelas ajudas, fico grato.

Thiago.

Link para o comentário
Compartilhar em outros sites

  • 0

Só que agora veio um outro problema. Quando vou chamar meu form MDI (Child) aparece a seguinte mensagem:

"Cannot create form. No MDI Forms are currently active."

aparentemente este erro aparece por eu não ter definido um MDI Pai, porém, eu defini. O pai é o form do Menu (que abre após o Login).

O que poderá ser este erro?

Visto que aparentemente está tudo certinho.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0

Então brother, o problema está em toda a estrutura do seu programa...

Primeiro que jamais o Form de Login deve ser o Pai (Principal, Main), desde que o mesmo deve ser fechado após o login...

Segundo que usar componente pra poder minimizar um form, que a princípio deveria ser o Pai, também é errado, só ai já da pra você ver que a estrutura do seu programa ta errada, o Form Pai era pra ser o que comanda o programa e no seu caso o de Login que está comandando e não era pra ter problema em minimizar o seu Form principal, que no caso, na estrutura do programa é o de Login, mas visualmente o fProgram

Enfim, vai dar nisso mesmo... um problema aqui, outro ali...

Se você tiver paciência, mude para a forma que expliquei... ai você não terá problemas

abrxx

Editado por Churc
Link para o comentário
Compartilhar em outros sites

  • 0

Não não Churc.

Acho que você não entendeu. Veja: "porém, eu defini. O pai é o form do Menu (que abre após o Login)." não é o form de login que é o pai. É o form que abre após a tela de login.

Sendo assim era aparentemente para dar certo, ou não?

Link para o comentário
Compartilhar em outros sites

  • 0
Certo, mas mesmo você definindo o Form do Menu como Principal no programa, ele não minimizava?

Não aí sim ele minimizava certinho.

Só que agora é este problema do form mdi.

Porém, como eu disse está tudo definido certinho:

form do menu : fsMDIForm

form que quero abrir: fsMDIChild

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...