Form é mostrado antes que o programa

09/12/2003

1

Pessoal,

Estou fazendo um programa e de um dia para o outro um dos forms começou a dar problema: ele é mostrado e depois se fecha, antes do form principal (sem que eu desse um comando para isso), e quando tento entrar nele pelo caminho correto, dá um erro. Pelo Debug ele é mostrado logo depois em que é criado, mas não há um comando show para isso.
Alguém têm alguma ideia do que pode ser?

[]´s


Responder

Posts

09/12/2003

Fbag22

A sua Aplicação é MDI?


Responder

09/12/2003

Ozelo

Não. O que você acha que é?

[]´s


Responder

10/12/2003

Nigro

Esse tal formulário para que server? É um splash? Ou um autenticador de senhas?


Responder

10/12/2003

Fbag22

É pq se ela for MDI, tudos os formularios que estao no auto-create sao mostrados quando o programa carrega, é uma possibilidade.

Faz o seguinte no Delphi clica em Ctrl+F12 e abre o seu projeto (o arquivo DPR) e veja se tem algum comando lá.

Se quiser poste o codigo aki pra gente ver

Abraço


Responder

10/12/2003

Ozelo

Nigro,

Nào é uma splash, é um form de cadastro de cliente do aplicativo.

Fabio,
program Anaglea;

uses
  Forms,
  Sace in ´Sace.pas´ ,
  DMunit in ´DMunit.pas´ {DM: TDataModule},
  ConfigUnit in ´ConfigUnit.pas´ ,
  ListCliUnit in ´ListCliUnit.pas´ ,
  CadCliUnit in ´CadCliUnit.pas´ ,
  PegaCliUnit in ´PegaCliUnit.pas´ ,
  CadConUnit in ´CadConUnit.pas´ ,
  FormAnivUnit in ´FormAnivUnit.pas´ ,
  ReportListCliUnit in ´ReportListCliUnit.pas´ {ReportListCli: TQuickRep},
  ReportCadCliUnit in ´ReportCadCliUnit.pas´ {ReportCadCli: TQuickRep},
  CadFunUnit in ´CadFunUnit.pas´ ,
  FunDemiUnit in ´FunDemiUnit.pas´ ,
  ReportCadFunUnit in ´ReportCadFunUnit.pas´ {ReportCadFun: TQuickRep},
  ListFunUnit in ´ListFunUnit.pas´ ,
  ReportListFunUnit in ´ReportListFunUnit.pas´ {ReportListFun: TQuickRep},
  ListConUnit in ´ListConUnit.pas´ ;

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TDM, DM);
  Application.CreateForm(TFormConfig, FormConfig);
  Application.CreateForm(TFormListCli, FormListCli);
  Application.CreateForm(TFormCadCli, FormCadCli);
  Application.CreateForm(TFormPegaCli, FormPegaCli);
  Application.CreateForm(TFormCadCon, FormCadCon);
  Application.CreateForm(TFormAniv, FormAniv);
  Application.CreateForm(TReportListCli, ReportListCli);
  Application.CreateForm(TReportCadCli, ReportCadCli);
  Application.CreateForm(TFormCadFun, FormCadFun);
  Application.CreateForm(TFormFunDemi, FormFunDemi);
  Application.CreateForm(TReportCadFun, ReportCadFun);
  Application.CreateForm(TFormListFun, FormListFun);
  Application.CreateForm(TReportListFun, ReportListFun);
  Application.CreateForm(TFormListCon, FormListCon);
  Application.Run;
end.


O form é o FormCadCli, ele é mostrato logo depois de ser criado, quando a aplicação começa a rodar ele desapareçe, e quando tento entrar nele dentro do programa, recebo uma mensagem de erro.

Se alguém poder me ajudar eu agradeço.

[]´s


Responder

11/12/2003

Fbag22

ok, por acaso a propriedade OnCreate ou OnShow desse form tem alguma coisa?


Responder

11/12/2003

Fbag22

Ah, verifique tb o OnShow do Form Principal.


Responder

11/12/2003

Ozelo

Fabio,

Tanto o FormCadCli como o form principal não possuem evento OnCreate e nem OnShow. Verifiquei também a propriedade FormStyle, e ela está em fsNormal.

[]´s


Responder

12/12/2003

Fbag22

Realmente é muito estranho. Mas tente fazer o sequinte: Dê um Build All no projeto pra ver se ele corrige o problema. Tente outra coisa tb: entre nas propriedades do projeto e veja a lista de formulários, há duas colunas, Auto-Create e avaliable forms (ou alguma coisa assim). Pois bem, coloque esse form em avaliable form, assim sua janela nao vai carregar assim que o programa iniciar (se vc fizer isso com todos os formularios, menos o principal, seu projeto vai carregar muito mais rápido). Depois, pra abrir a janela vc nao usa:

Form1.ShowModal;

e sim:

Form1 := TForm1.Create(nil); [i:8a35dc5336]//Cria o formulário[/i:8a35dc5336]
Form1.ShowModal; [i:8a35dc5336]//Abre a janela em formato modal[/i:8a35dc5336]
Form1.Free; [i:8a35dc5336]//Libera o form da memória[/i:8a35dc5336]

vc pode usar isso em todos os seus forms, seu programa fica muito mais leve em runtime.

Tenho certeza q dessa forma, irá acabar o problema. Mas mesmo assim, tente dar um Build All antes, blz...


Um abraço e sucesso


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira