GARANTIR DESCONTO

Fórum Qtos Forms do AutoCreate jah foram criados #258530

16/11/2004

0

Delphianos(as)

Alguem sabe se tem no delphi algum comando, propriedade evento... qq coisa p eu saber se um form do AutoCreate jah foi criado?

PorEx.
Tenho os FormSplash,Form1,Form2,DataModule1 no autocreate... o resto eu crio em tempo de execucao...

Dae no FormSplash eu carregaria o Gauge e iria aumentando conforme a criacao dos mesmos...

(se non me engano no flash tem uma comando ´loaded´ alguma coisa assim)


Osocram

Osocram

Responder

Posts

16/11/2004

Massuda

Na Ajuda do Delphi, no tópico TApplication.CreateForm tem um exemplo de como fazer isso.


Responder

Gostei + 0

16/11/2004

Osocram

Na Ajuda do Delphi, no tópico TApplication.CreateForm tem um exemplo de como fazer isso.


Eu fui ver no Ajuda do Delphi.... e aquilo q tinha lah eu jah tinha tentando... realmente funciona mas pelo menos aqui tinha dado um prob...depois q eu fiz esse codigo todos os forms do Autocreate sumiram (tipo qdo eu vou no menu Project>Option)


Responder

Gostei + 0

16/11/2004

Massuda

Então, acho que você tem duas alternativas...
[list:ea603b5688][*:ea603b5688]Criar uma classe derivada de TApplication onde, no método CreateForm você dispare um evento ao criar um form, por exemplo, OnCreateForm (esse evento não existe em TApplication).[*:ea603b5688]Monitorar, possivelmente em um timer, TApplication.ComponentCount e TApplication.Components[] para detectar a criação dos forms.[/list:u:ea603b5688]


Responder

Gostei + 0

16/11/2004

Massuda

Depois de checar como Application é usado pelo Delphi (é criado/destruído na unit Controls), percebi que talvez minha primeira sugestão possa gerar alguns problemas...


Responder

Gostei + 0

16/11/2004

Osocram

Vlw pela dica...

Olhem oq eu fiz
procedure TFormSplash.FormPaint(Sender: TObject);
const NForm = 12;
      MaxForm = 120;//Nform*100
begin
  try
  Gauge1.Progress := 1;//so p inicializar
  Application.CreateForm(TDataModule1, DataModule1);
  Gauge1.Progress := round(MaxForm/NForm)*1;
  Application.CreateForm(TDataModule2, DataModule2);
  Gauge1.Progress := round(MaxForm/NForm)*2;
  Application.CreateForm(TDataModule4, DataModule4);
  Gauge1.Progress := round(MaxForm/NForm)*3;
  Application.CreateForm(TDMOperacoes, DMOperacoes);
  Gauge1.Progress := round(MaxForm/NForm)*4;
  Application.CreateForm(TDMCad, DMCad);
  Gauge1.Progress := round(MaxForm/NForm)*5;
  Application.CreateForm(TDMConsulta, DMConsulta);
  Gauge1.Progress := round(MaxForm/NForm)*6;
  Application.CreateForm(TFormControle, FormControle);
  Gauge1.Progress := round(MaxForm/NForm)*7;
  Application.CreateForm(TFormInfoCli, FormInfoCli);
  Gauge1.Progress := round(MaxForm/NForm)*8;
  Application.CreateForm(TFormDividasFinal, FormDividasFinal);
  Gauge1.Progress := round(MaxForm/NForm)*9;
  Application.CreateForm(TFormDividasFinalFor, FormDividasFinalFor);
  Gauge1.Progress := round(MaxForm/NForm)*10;
  Application.CreateForm(TFormCaixaQuita, FormCaixaQuita);
  Gauge1.Progress := round(MaxForm/NForm)*11;
  Application.CreateForm(TFormChamador, FormChamador);

  Gauge1.Progress := round(MaxForm/NForm)*12-1;//so p non enxer td agora.... e sim qdo der um show no FormControle

  FormControle.show;
  Gauge1.Progress := Gauge1.MaxValue;
  FormSplash.Hide;
  finally
    FormSplash.Release;
    FormSplash := nil;
  end;//

FormControle eh a tela d login... enton depois d dar um Show nele... eu posso deletar minha tela de Splash....

Esta funcionando se alguem precisar....

E se alguem achar algum prob aqui poderia me avisar?

Vlw....
:D
(Se non tiver nenhum prob enton podem fazer o aproveitamento do codigo)


Responder

Gostei + 0

16/11/2004

Osocram

Ok...
Estava funcando td blz... ae deu pau no delphi e agora non aparece a figura q tem no Splash
:(

mas o Gauge continua funcando....
Serah q tem como eu colocar em algum outro evento? qual seria?


Responder

Gostei + 0

16/11/2004

Bruno_fantin

Eu colocaria isso no proprio dpr....


Responder

Gostei + 0

16/11/2004

Osocram

Eu colocaria isso no proprio dpr....

Eh q no dpr tava dando erro d excessao....
Mas acho q eu estava fazendo kk,
Agora deu certo
:D
Const NForm = 12;
      MaxForm =120; //NForms*100

begin

  Application.Initialize;
  Application.CreateForm(TFormSplash, FormSplash);
  try
  FormSplash.Show;
  FormSplash.Update;
  FormSplash.Gauge1.Progress := 1;//so p inicializar
  Application.CreateForm(TDataModule1, DataModule1);
  FormSplash.Gauge1.Progress := round(MaxForm/NForm)*1;
  Application.CreateForm(TDataModule2, DataModule2);
  FormSplash.Gauge1.Progress := round(MaxForm/NForm)*2;
  Application.CreateForm(TDataModule4, DataModule4);
  FormSplash.Gauge1.Progress := round(MaxForm/NForm)*3;
  Application.CreateForm(TDMOperacoes, DMOperacoes);
  FormSplash.Gauge1.Progress := round(MaxForm/NForm)*4;
  Application.CreateForm(TDMCad, DMCad);
  FormSplash.Gauge1.Progress := round(MaxForm/NForm)*5;
  Application.CreateForm(TDMConsulta, DMConsulta);
  FormSplash.Gauge1.Progress := round(MaxForm/NForm)*6;
  Application.CreateForm(TFormControle, FormControle);
  FormSplash.Gauge1.Progress := round(MaxForm/NForm)*7;
  Application.CreateForm(TFormInfoCli, FormInfoCli);
  FormSplash.Gauge1.Progress := round(MaxForm/NForm)*8;
  Application.CreateForm(TFormDividasFinal, FormDividasFinal);
  FormSplash.Gauge1.Progress := round(MaxForm/NForm)*9;
  Application.CreateForm(TFormDividasFinalFor, FormDividasFinalFor);
  FormSplash.Gauge1.Progress := round(MaxForm/NForm)*10;
  Application.CreateForm(TFormCaixaQuita, FormCaixaQuita);
  FormSplash.Gauge1.Progress := round(MaxForm/NForm)*11;
  Application.CreateForm(TFormChamador, FormChamador);

  FormSplash.Gauge1.Progress := round(MaxForm/NForm)*12-1;//so p non enxer td agora.... e sim qdo der um show no FormControle

  FormControle.show;
  FormSplash.Gauge1.Progress := FormSplash.Gauge1.MaxValue;
  FormSplash.Hide;
  finally
    FormSplash.Release;
    FormSplash := nil;
  end;//
  Application.Run;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar