Splash

25/11/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


Roger1976

Respostas

26/11/2005

Tnaires

Olá
Tente substituir o
FreeAndNil(frmSplash);

por
frmSplash.Release;

Abraços


Responder Citar

26/11/2005

Roger1976

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.


Responder Citar

27/11/2005

Aspirante

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:

{$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:

SplashForm.Hide; SplashForm.Free; Application.Run;


Espero que possa ter ajudado.

Flw.


Responder Citar

27/11/2005

Roger1976

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,


Responder Citar

27/11/2005

Aspirante

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.


Responder Citar

28/11/2005

Tnaires

Olá
Essa é a maneira que eu codifico o Splash:
  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


Responder Citar

28/11/2005

Roger1976

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,


Responder Citar