Array
(
)

Splash

Roger1976
   - 25 nov 2005

Olá amigos, blz? Tenho uma dúvida em relação à tela de splash. Qdo ela é executada, teoricamente deveria fechar no momento em que a tela principal do sistema abre. Pois bem, qdo eu minimizo a tela principal, lá está ela, na verdade ela não está desaparecendo, fica atrás da principal.

Gostaria de saber se é dessa maneira que funciona ou se estou errando em algum lugar do código fonte. As linhas de código que utilizei são:



{$R *.res}

begin
Application.Initialize;

frmSplash := TfrmSplash.Create(Application);
frmSplash.Show;
frmSplash.Refresh;
Sleep(1000);

Application.CreateForm(TdmConexao, dmConexao);
...

FreeAndNil(frmSplash);

Application.Run;

Já segui algumas sugestões, mas não deram certo.

Fico no aguardo.

Um abraço a todos,

Rogério


Tnaires
   - 26 nov 2005

Olá
Tente substituir o
#Código

FreeAndNil(frmSplash);

por
#Código
frmSplash.Release;

Abraços


Roger1976
   - 26 nov 2005

Tarso, eu fiz o teste, porém não deu certo. Tem um procedimento que ao abrir a tela de MOVIMENTAÇÃO, automaticamente minimiza a tela principal. Nesse intervalo, a tela de splash aparece e em seguida desaparece. Acho que deverei fazer isso de outra forma, caso tenha uma sugestão, testarei.

Obrigado pela atenção.


Aspirante
   - 27 nov 2005

Olha, a minha tela de Splash não fica não cara. Só que meu código é bem diferentinho. Tente esse código. Espero que possa ajudar:

Primero pegue o formulário que é o Splash e no menu Project - Options mude ele pra Available forms. Aí, no ViewSource escreva:

#Código

{$R *.res}

begin
SplashForm := TSplashForm.Create(Application);
SplashForm.Show;
SplashForm.BorderStyle:=bsnone;
SplashForm.Update;
Application.Title := ´Programa´;
Application.Initialize;


Tá, ainda no View Source, vai ter os códigos que inicializam os formulários né. Depois deles no final coloque:


Citação:
SplashForm.Hide;
SplashForm.Free;
Application.Run;


Espero que possa ter ajudado.

Flw.


Roger1976
   - 27 nov 2005

Kra, testei o seu código, o problema é que mesmo assim, se vc arrastar a tela o splash vai estar lá. Na tela principal, tem um menu chamado MOVIMENTAÇÕES, e uma opção chamada ENTRADA/SAÍDA, que é onde acesso a tela de movimentação de componentes de informática.

Dê uma olhada no código abaixo que eu utilizei:

try
frmPrincipal.WindowState := wsMinimized;
frmMovimentacao := TfrmMovimentacao.Create(self);
frmMovimentacao.ShowModal;
finally
FreeAndNil(frmMovimentacao);
end;

No intervalo de uma tela para outra, o splash aparece, veja que não a ação de minimizar a tela principal e exibir a tela de movimentação é feita pelo sistema, e não pelo usuário. Talvez Tarso tenha alguma coisa errada no código acima. Um detalhe, estou usando o Delphi 2005, eu não sei se isso tem alguma coisa a ver.

Kra, valeu pela força, se puder faça um teste neste código, caso veja algo de errado, é só me avisar.

Um abraço,


Aspirante
   - 27 nov 2005

Cara não to entendendo não. Porque no meu funciona sim a tela de Splash. Mesmo movimentando a tela principal, a tela de Splash não está lá. Tem certeza de que você fez os procedimentos certos? Bom, o SplashForm tem que estar no Available forms e após a chamada dos formulários, SplashForm.Hide, SplashForm.Free.

Sinceramente, acho que você está com algum problema em fazer o código, porque não vejo erro, ele oculta e libera o Splash.

Uhmm. Não sei se é o 2005 que dá problema não, mas eu uso o 6.

Mas se continuar dando problema cara, tenta fazer:

SplashForm.Width := 1
SplashForm.Height := 1
SplashForm.Left := 10000

Hehehe. É meio sem noção mas pode até servir.

Testa aí.

Flw.


Tnaires
   - 28 nov 2005

Olá
Essa é a maneira que eu codifico o Splash:
#Código

Application.Initialize;
FrmSplash := TFrmSplash.Create(Application);
with FrmSplash do
begin
Show;
Update;
end;
// O Form principal eu crio depois do Splash:
Application.CreateForm(TFrmPrincipal, FrmPrincipal);
Application.CreateForm(TDtmPrincipal, DtmPrincipal);
// No meu caso, há um formulário de login que eu crio agora:
Application.CreateForm(TFrmSenhaUsuario, FrmSenhaUsuario);
FrmSenhaUsuario.ShowModal;
// Agora eu destruo o Splash:
FrmSplash.Release;
Application.Run;

Compare com o seu código e cite as diferenças para nós.
Abraços


Roger1976
   - 28 nov 2005

Amigos, eu refiz o código e agora funcionou. Sinceramente, eu não sei onde estava o erro, mas o que importa é que funcionou... Eu ainda estou iniciando, e estou apanhando muito, mas estou aprendendo muito tbém.

Valeu mesmo pela ajuda de vcs...

Abraços,