Form Splash com Efeito
Olá,
Preciso montar um tela de splash que apareça durante uma determinada rotina.
Gostaria de colocar um efeito subindo e sumindo gradativamente.
Fiz conforme abaixo, mas sem o efeito de sumir gradativamente ou quase transparente a medida que sobe.
Application.CreateForm(TFormSplash, FormSplash);
FormSplash.WindowState := wsMaximized;
FormSplash.Caption := Titulo;
FormSplash.mmo1.Lines.Add(Mensagem);
with FormSplash do
begin
Top := 695;
Left := 1134;
Height := 144;
Width := 270;
show;
end; unit USplahs; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, BackgroundWorker; type
TFormSplash = class(TForm)
mmo1: TMemo;
tmr1: TTimer;
tmr3: TTimer;
BackgroundWorker1: TBackgroundWorker;
procedure tmr3Timer(Sender: TObject);
procedure tmr1Timer(Sender: TObject);
procedure BackgroundWorker1DoWork(Sender: TObject);
private
{ Private declarations }
procedure WMNChitTest(var M: TWMNchitTest);
message WM_NCHITTEST;
public
{ Public declarations } end; var
FormSplash: TFormSplash; implementation {$R *.dfm} procedure TFormSplash.tmr3Timer(Sender: TObject);
begin
close;
end; procedure TFormSplash.tmr1Timer(Sender: TObject);
VAR
I :Integer;
begin BackgroundWorker1.RunWorkerAsync;
end; procedure TFormSplash.WMNCHitTest(var M: TWMNCHitTest); begin
inherited;
if M.result = htclient then
M.result := htCaption; end; procedure TFormSplash.BackgroundWorker1DoWork(Sender: TObject);
begin FormSplash.Top := FormSplash.Top - 75;
FormSplash.Left := 1134;
FormSplash.Height := 144;
FormSplash.Width := 270;
end; end. Att.. Ricardo
FormSplash.WindowState := wsMaximized;
FormSplash.Caption := Titulo;
FormSplash.mmo1.Lines.Add(Mensagem);
with FormSplash do
begin
Top := 695;
Left := 1134;
Height := 144;
Width := 270;
show;
end; unit USplahs; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, BackgroundWorker; type
TFormSplash = class(TForm)
mmo1: TMemo;
tmr1: TTimer;
tmr3: TTimer;
BackgroundWorker1: TBackgroundWorker;
procedure tmr3Timer(Sender: TObject);
procedure tmr1Timer(Sender: TObject);
procedure BackgroundWorker1DoWork(Sender: TObject);
private
{ Private declarations }
procedure WMNChitTest(var M: TWMNchitTest);
message WM_NCHITTEST;
public
{ Public declarations } end; var
FormSplash: TFormSplash; implementation {$R *.dfm} procedure TFormSplash.tmr3Timer(Sender: TObject);
begin
close;
end; procedure TFormSplash.tmr1Timer(Sender: TObject);
VAR
I :Integer;
begin BackgroundWorker1.RunWorkerAsync;
end; procedure TFormSplash.WMNCHitTest(var M: TWMNCHitTest); begin
inherited;
if M.result = htclient then
M.result := htCaption; end; procedure TFormSplash.BackgroundWorker1DoWork(Sender: TObject);
begin FormSplash.Top := FormSplash.Top - 75;
FormSplash.Left := 1134;
FormSplash.Height := 144;
FormSplash.Width := 270;
end; end. Att.. Ricardo
Frigorifico Sa
Curtidas 0
Respostas
Rodrigo Mourão
26/11/2009
Olá amigo.
O Delphi possui duas propriedades para fazer um form ficar transparente.
AlphaBlend e AlphaBlendValue.
A primeira ativa a "transparencia" e a segunda o nivel de transparencia onde 0 e 100% transparente e 255 e 100% opaco.
No seu caso vc terá que colocar a propriedade AlphaBlend como true e a AlphaBlendValue como 255. A medida que o form for subindo vc vai diminuindo o AlphaBlendValue como fez com o top até chegar a 0.
Acho que é isso.
Abs !!
O Delphi possui duas propriedades para fazer um form ficar transparente.
AlphaBlend e AlphaBlendValue.
A primeira ativa a "transparencia" e a segunda o nivel de transparencia onde 0 e 100% transparente e 255 e 100% opaco.
No seu caso vc terá que colocar a propriedade AlphaBlend como true e a AlphaBlendValue como 255. A medida que o form for subindo vc vai diminuindo o AlphaBlendValue como fez com o top até chegar a 0.
Acho que é isso.
Abs !!
GOSTEI 0
Frigorifico Sa
26/11/2009
Olá Rodrigo,
Funcionou perfeitamente.
Pode encerrrar.
Muito Obrigado.
Att..
Ricardo
GOSTEI 0