Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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.vá no delphi.. em project->Options->Forms
no auto-create forms ache FrmPrincipal e dê dois click.
dá ok e rode..
>
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.
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
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.
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
Alguém sabe de alguma propriedade que eu possa ter alterado que tenha acarretado neste problema?
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
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