Qtos Forms do AutoCreate jah foram criados
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)
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
Curtidas 0
Respostas
Massuda
16/11/2004
Na Ajuda do Delphi, no tópico TApplication.CreateForm tem um exemplo de como fazer isso.
GOSTEI 0
Osocram
16/11/2004
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)
GOSTEI 0
Massuda
16/11/2004
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]
[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]
GOSTEI 0
Massuda
16/11/2004
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...
GOSTEI 0
Osocram
16/11/2004
Vlw pela dica...
Olhem oq eu fiz
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)
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)
GOSTEI 0
Osocram
16/11/2004
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?
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?
GOSTEI 0
Bruno_fantin
16/11/2004
Eu colocaria isso no proprio dpr....
GOSTEI 0
Osocram
16/11/2004
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;
GOSTEI 0