shawn857
asked on
Any tool/component out there to help making spiffy splashscreens with some graphic effects?
Hello Experts, does anyone know of a tool/component that will help me make snazzy splashscreens (preferably free) ? I already have a splashscreen made, and I'm thinking if there was some tool that could make this splashscreen appear in a "slowly materializing" manner, and then disappear also in a similarly slowly de-materializing manner... that would be a great effect. Any ideas anyone?
Thanks!
Shawn
Thanks!
Shawn
There are free components on Torry.net and paid like this one:
http://www.tmssoftware.com /site/advs moothsplas hscreen.as p
http://www.tmssoftware.com
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks Thommy, I took your example and tried to go one step further by having my splashscreen also "fade out" (small demo proect attached). The fade in and fade out works good, but just before the main form appears, the splashscreen "flashes" once very quickly. Do you know if there's some way to stop that quick flash?
Thanks
Shawn
P.S: I'm using Delphi 7 and a few things from your demo code did not compile for me:
(1) Application.MainFormOnTask bar := True;
(2) The declaration of unit Vcl.Imaging.jpeg
SplashScreen.zip
Thanks
Shawn
P.S: I'm using Delphi 7 and a few things from your demo code did not compile for me:
(1) Application.MainFormOnTask
(2) The declaration of unit Vcl.Imaging.jpeg
SplashScreen.zip
Ok, I'm using Delphi XE3 and there is no flashing.
If you want I can send you my exe that you can see that.
I think I have a Delphi 7 version at one of my vmware machines.
Allow me a little time to look for it, then I will compile your demo source with Delphi 7 and check the flashing...
If you want I can send you my exe that you can see that.
I think I have a Delphi 7 version at one of my vmware machines.
Allow me a little time to look for it, then I will compile your demo source with Delphi 7 and check the flashing...
i tested your sample (and modified it somewhat)
you can strip all splash code from the .dpr file (except the uses line)
with this unit
does it still flash with this code below ?
(i think it 's something with the hide procedure and visible property)
in my main unit in formshow:
you can strip all splash code from the .dpr file (except the uses line)
with this unit
does it still flash with this code below ?
(i think it 's something with the hide procedure and visible property)
unit uSplash;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TfrmSplash = class(TForm)
Timer1: TTimer;
Label1: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
fCompleted: boolean;
fAlphaBlendStep: byte;
fTimerIntervall: integer;
fStayTime: integer;
fDoneFadingIn : Boolean;
fWaitForFadeOut: boolean;
public
constructor Create(aOwner: TComponent); override;
end;
var
frmSplash: TfrmSplash;
procedure SplashStart(WaitForFadeOut: Boolean = False);
procedure SplashStop(Immediate: Boolean = False);
implementation
{$R *.dfm}
procedure SplashStart(WaitForFadeOut: Boolean = False);
begin
frmSplash := TfrmSplash.Create(nil);
frmSplash.fWaitForFadeOut := WaitForFadeOut;
frmSplash.Show;
frmSplash.BringToFront;
frmSplash.Update;
end;
procedure SplashStop(Immediate: Boolean = False);
begin
if Immediate then
begin
if Assigned(frmSplash) then
begin
FreeAndNil(frmSplash);
frmSplash := nil;
end;
end
else
frmSplash.fWaitForFadeOut := False;
end;
{ TfrmSplash }
constructor TfrmSplash.Create(aOwner: TComponent);
begin
inherited Create(AOwner);
AlphaBlend:=True;
AlphaBlendValue := 0;
fAlphaBlendStep := 5;
fTimerIntervall := 100;
fStayTime := 3000;
fWaitForFadeOut := False;
Timer1.Interval := fTimerIntervall;
// Default Timer is disabled
Timer1.Enabled := true;
fCompleted := False;
fDoneFadingIn := False;
end;
procedure TfrmSplash.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
frmSplash := nil;
end;
procedure TfrmSplash.Timer1Timer(Sender: TObject);
var
OldAlphaBlendValue: byte;
begin
if not fDoneFadingIn then
begin
oldAlphaBlendValue := AlphaBlendValue;
AlphaBlendValue := AlphaBlendValue + fAlphaBlendStep;
if AlphaBlendValue < OldAlphaBlendValue then
AlphaBlendValue := 255;
if AlphaBlendValue >= 255 then
fDoneFadingIn := True;
end
else
begin
if not fWaitForFadeOut then
begin
AlphaBlendValue := AlphaBlendValue - fAlphaBlendStep;
if AlphaBlendValue <= 0 then
begin
Timer1.Enabled := false;
fCompleted := true;
Close;
end;
end;
end;
end;
initialization
// use false if no wait for fadeout
SplashStart(True);
finalization
SplashStop(True);
end.
in my main unit in formshow:
uses uSplash;
procedure TfrmMain.OnFormShow(Sender: TObject);
begin
SplashStop;
end;
I have tested your sample with Delphi 7.
My first thought also was, that the flashing could have something to do with setting the visible property to false before calling the hide procedure.
But after cutting out the Alphacontrols and compiling your code with Delphi 7 everything works fine, although both, visible:=false and Hide are included.
Maybe it's somehing in combination with the Alphaskins.
First of all remove the line with visible:=false and check if flashing still occurs...
My first thought also was, that the flashing could have something to do with setting the visible property to false before calling the hide procedure.
But after cutting out the Alphacontrols and compiling your code with Delphi 7 everything works fine, although both, visible:=false and Hide are included.
Maybe it's somehing in combination with the Alphaskins.
First of all remove the line with visible:=false and check if flashing still occurs...
ASKER
Hi Thommy, yes I removed the visible:=false line and it still flashes - with or without it.
The culprit is indeed the AlphaSkins component - if you de-activate it (ie. Unit1 form, sSkinManager1 component, set Active property to False) and recompile, you will see the flashing is gone. I will have to contact the AlphaSkins people about this little glitch I guess.
Thanks!
Shawn
The culprit is indeed the AlphaSkins component - if you de-activate it (ie. Unit1 form, sSkinManager1 component, set Active property to False) and recompile, you will see the flashing is gone. I will have to contact the AlphaSkins people about this little glitch I guess.
Thanks!
Shawn
Yeah, I have also made similar experiences with AlphaControls causing supoptimal screen behavior in previous projects...
ASKER
Thanks Thommy... I'll probably go with just the fade-in as in your example, no need for the fade-out.
Thanks!
Shawn
Thanks!
Shawn
This is the part two which uses png graphics. FTo use bmp see part one. If you're not interesting transparency, you can see only the part about fading in.