Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JonatasFn

Problemas com Form Main

Recommended Posts

Olá pessoal,

parece ser uma dúvida besta (e é mesmo), mas é o seguinte eu tenho uma aplicação, e deixo o form de Login como Form Main. Aí ontem mexendo em um outro form, o form principal da aplicação, eu consegui estragar tudo. Agora quando mando executar a aplicação ele abre o form de Login normalmente, mas tbm abre o Form principal junto, e eu consigo usar o form principal sem fazer login.

 

Minhas dúvidas são:

1- Onde eu mudei alguma coisa q eu fiz isto?

2- Existe algum problema em deixar o Form de Login como Form Main?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se os dois forms estão sendo criados juntos, vale a pena dar uma olhada no código do seu projeto, que é o .dpr ... provavelmente a ordem de criação dos forms lá pode estar meio zuada... quanto a sua questão, eu particularmente prefiro deixar o form de login separado do principal, pois o de login para mim só serve para validar o usuário no start da aplicação e para chamar a partir dele o principal.

 

Posta o código do seu .dpr para análise se precisar de ajuda... experimente debugá-lo para ver passo a passo o que está acontecendo com o seu projeto e vai facilitar pra você localizar seu problema.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, mas eu nem mudei nada lá.

 

Tem um comentário q fiz em uma linha, mas isso já tá lá há muuuuuuuito tempo. Andei mexendo nas propriedades do form para vez como eu fazia para o form Principal minimizar na barra de tarefas e não na canto esquerdo da tela.

 

Além de não conseguir fazer isto, bichei o form...

 

Segue o código do projeto:


program MGSUL;

uses
  Forms,
  CadFuncionarios in 'CadFuncionarios.pas' {frmCadFuncionarios},
  Principal in 'Principal.pas' {frmPrincipal},
  CadCidades in 'CadCidades.pas' {frmParametros},
  Login in 'Login.pas' {frmLogin},
  ConsFuncionario in 'ConsFuncionario.pas' {frmConsFuncionarios},
  RelAniversariantes in 'RelAniversariantes.pas' {frmRelAniversariantes},
  DataModule in 'DataModule.pas' {DM: TDataModule},
  AltSenha in 'AltSenha.pas' {frmAltSenha},
  CadUsuario in 'CadUsuario.pas' {frmCadUsuario},
  Aniversariantes in 'Aniversariantes.pas' {frmAniversariantes},
  RelOnibus in 'RelOnibus.pas' {frmRelOnibus},
  ParamRelSetor in 'ParamRelSetor.pas' {frmParamRelSetor},
  RelSetor in 'RelSetor.pas' {frmRelSetor},
  Advertencias in 'Advertencias.pas' {frmAdvertencias},
  BuscFunc in 'BuscFunc.pas' {frmBuscaFunc},
  RelAdvertencia in 'RelAdvertencia.pas' {frmRelAdvertencia},
  Unit1 in 'Unit1.pas' {Form1},
  CadastroHoras in 'CadastroHoras.pas' {frmCadastroHoras},
  BuscaFuncHoras in 'BuscaFuncHoras.pas' {frmBuscaFuncHoras},
  SplashScreen in 'SplashScreen.pas' {frmSplashScreen},
  MesBase in 'MesBase.pas' {frmMesBase};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TfrmLogin, frmLogin);
  Application.CreateForm(TfrmMesBase, frmMesBase);
  Application.CreateForm(TfrmCadastroHoras, frmCadastroHoras);
  Application.CreateForm(TfrmCadFuncionarios, frmCadFuncionarios);
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TfrmAdvertencias, frmAdvertencias);
  Application.CreateForm(TfrmPrincipal, frmPrincipal);
  Application.CreateForm(TfrmRelOnibus, frmRelOnibus);
  Application.CreateForm(TfrmAniversariantes, frmAniversariantes);
  Application.CreateForm(TfrmCadUsuario, frmCadUsuario);
  Application.CreateForm(TfrmConsFuncionarios, frmConsFuncionarios);
  Application.CreateForm(TfrmRelAniversariantes, frmRelAniversariantes);
  Application.CreateForm(TfrmParametros, frmParametros);
  Application.CreateForm(TDM, DM);
  Application.CreateForm(TfrmAltSenha, frmAltSenha);
  Application.CreateForm(TfrmParamRelSetor, frmParamRelSetor);
  Application.CreateForm(TfrmRelSetor, frmRelSetor);
  Application.CreateForm(TfrmBuscaFunc, frmBuscaFunc);
  Application.CreateForm(TfrmRelAdvertencia, frmRelAdvertencia);
  Application.CreateForm(TfrmBuscaFuncHoras, frmBuscaFuncHoras);
  //Application.CreateForm(TfrmSplashScreen, frmSplashScreen);
  Application.Run;


  end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

vá no delphi.. em project->Options->Forms

no auto-create forms ache FrmPrincipal e dê dois click.

 

dá ok e rode..

 

Cara, mas deste jeito eu não crio o form principal. E eu preciso dele...

 

Ah... e uma coisa q reparei agora. Acho q o form principal tbm está como Main, pois se eu fechá-lo eu encerro a aplicação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fosse meu projeto, eu faria o seguinte...

 

program MGSUL; 
 
uses 
  Forms, 
  CadFuncionarios in 'CadFuncionarios.pas' {frmCadFuncionarios}, 
  Principal in 'Principal.pas' {frmPrincipal}, 
  CadCidades in 'CadCidades.pas' {frmParametros}, 
  Login in 'Login.pas' {frmLogin}, 
  ConsFuncionario in 'ConsFuncionario.pas' {frmConsFuncionarios}, 
  RelAniversariantes in 'RelAniversariantes.pas' {frmRelAniversariantes}, 
  DataModule in 'DataModule.pas' {DM: TDataModule}, 
  AltSenha in 'AltSenha.pas' {frmAltSenha}, 
  CadUsuario in 'CadUsuario.pas' {frmCadUsuario}, 
  Aniversariantes in 'Aniversariantes.pas' {frmAniversariantes}, 
  RelOnibus in 'RelOnibus.pas' {frmRelOnibus}, 
  ParamRelSetor in 'ParamRelSetor.pas' {frmParamRelSetor}, 
  RelSetor in 'RelSetor.pas' {frmRelSetor}, 
  Advertencias in 'Advertencias.pas' {frmAdvertencias}, 
  BuscFunc in 'BuscFunc.pas' {frmBuscaFunc}, 
  RelAdvertencia in 'RelAdvertencia.pas' {frmRelAdvertencia}, 
  Unit1 in 'Unit1.pas' {Form1}, 
  CadastroHoras in 'CadastroHoras.pas' {frmCadastroHoras}, 
  BuscaFuncHoras in 'BuscaFuncHoras.pas' {frmBuscaFuncHoras}, 
  SplashScreen in 'SplashScreen.pas' {frmSplashScreen}, 
  MesBase in 'MesBase.pas' {frmMesBase}; 
 
{$R *.res} 
 
begin 
  Application.Initialize; 
  Application.CreateForm(TDM, DM); 
  Application.CreateForm(TfrmLogin, frmLogin); 
  Application.Run;  
 end.

Forçaria o programa a criar apenas o DataModule e o form de login... e pelo form de login eu daria o create no form principal da minha aplicação SE o login fosse válido, senão finalizaria o programa... para criar o form, poderia usar algo do tipo....

 

if login = true then
begin
    try
        FormPrincipal := TFormPrincipal.Create(Self);
        FormLogin.Visible := False;
        FormPrincipal.ShowModal;
    finally
        FreeAndNil(FormLogin);
    end;
end;

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, mas eu não queria mudar o q já estava funcionando legalzinho...

 

Se eu conseguisse descobrir o q está causando isto. Posso trocar o Form Main, pra qualquer outro form q o form principal aparece junto.

 

As propriedades do meu form estão assim:

 

BorderStyle : bsSizeable

DefaultMonitor: dmActiveForm

FormStyle: fsNormal

 

etc...

 

Acho q foi depois q mudei o DefaultMonitor q começou a acontecer isto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo...

 

Da forma que sugeri, você apenas deixaria de criar todos os seus forms no create do programa e passaria a criá-los quando realmente houvesse necessidade... em todo caso, você pode tentar o seguinte: deixe seu form principal com visible false e só o torne visível depois que logar no sistema pelo seu login.... mas eu deixo registrado que eu não recomendo esta prática e muito menos a uso... só sugiro isto porque no trampo agora não estou mais usando Delphi e não tenho como verificar se há alguma configuração que possa ajudar a contornar o problema... Ainda sou mais de usar a idéia que sugeri antes desta.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Cara, eu não sei se isso ajuda, mas eu criei um componente de login, para não ter que ficar criando o form de login e tals.

 

Para usar é bem Simpes, no evento onCreate do form principal você colocaria assim:

 

ROBJLogin1.addLogin('Usuario1', 'Senha1');

ROBJLogin1.addLogin('Usuario2', 'Senha2');

ROBJLogin1.addLogin('Usuario3', 'Senha3');

ROBJLogin1.addLogin('Usuario4', 'Senha4');

{e quantos logins a mais que poderão ser aceitos}

 

ROBJLogin1.execute;

 

Se o cara errar o login, fechar a janela, ou cancelar, a aplicação é finalizada.

 

Se você se interessar: tonello.rafinha@gmail.com (pode ficar tranquilo que eu não cobro nada.. : D)

 

ele faz parte de uma paleta de componentes que eu estou criando

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.