什么是在Delphi中实现启动屏幕的最佳方法?
FormStyle
设为 fsStayOnTop
,将其边框样式设置为无,将其标题设置为空。这将创建一个没有顶部标题栏的表单。在表单上放置一个 TImage
,并将您的位图加载到其中。TSplashForm = class (TForm)
Image1: TImage;
CloseTimer: TTimer;
procedure CloseTimerTimer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
FStartTicks: integer;
FOKToClose: boolean;
public
property OKToClose: boolean read FOKToClose write FOKToClose;
end;
var
SplashForm: TSplashForm;
procedure TSplashForm.FormCreate(Sender: TObject);
begin
FStartTicks := GetTickCount;
end;
procedure TSplashForm.CloseTimerTimer(Sender: TObject);
const
CTimeout = 3000;
begin
if (GetTickCount - FStartTicks > CTimeout) and OKToClose then
Close;
end;
procedure TSplashForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TSplashForm.FormDestroy(Sender: TObject);
begin
SplashForm := nil;
end;
begin
SplashForm := TSplashForm.Create(nil)
Application.Initialize;
Application.Title := 'My Program';
//create your forms, initialise database connections etc here
Application.CreateForm(TForm1, Form1);
if Assigned(SplashForm) then
SplashForm.OkToClose := True;
Application.Run;
end.
大部分代码都是我凭记忆写的,可能一开始并不能编译。
OnCreate
事件处理程序中设置FormStyle := fsStayOnTop;
,但仅当未设置DebugHook
时才这样做。否则,启动画面将会遮挡IDE的一些内容。如果你只有一个显示器进行调试,那么就比较倒霉了。 - mghie/nosplash
命令行选项。 - NatGetTickCount
... 它只是作为一个建议添加的... 但实际上并不需要它。 - Nat这是我的做法:首先通过在项目中添加一个空表单来创建一个新的单元(文件->新建->表单),让我们称其为“闪屏”,将其(表单)边框样式设置为bsnone,并将其名称属性设置为“splashscreen”或您想要的任何名称,通过首先使用mspaint或其他工具设计图片然后将timage组件拖到表单上并通过它打开图像文件来设计它(表单),在单元的var部分添加以下行:“splashscreen:Tsplashscreen;(您可以使用任何名称)”,然后将此单元的名称添加到第一个单元的uses从句中,并将下面的代码添加到第一个单元的表单oncreate事件中:
procedure TForm1.FormCreate(Sender: TObject);
var
splash : Tsplashscreen;
begin
Splash := TSplashScreen.Create(Application);
Splash.Show;
Sleep(1000); //as long as you want screen to be displayed 1000 = 1 second
Splash.Hide;
Splash.Free;
end;
关于启动界面,技术上并没有太大难度,它只是一个弹出窗口然后消失的表单。因此,在Delphi中实现启动界面最好的方法是:找一位图形设计师为您绘制一个!