Delphi启动画面不关闭任务栏中的图标

时间:2015-07-27 10:16:12

标签: delphi splash-screen vcl delphi-xe8

我使用this文章创建了一个简单的启动画面。一切正常,但在我的Splash Screen被释放后,我的任务栏中仍然有一个额外的图标 - 因此,对于一个应用程序,我有两个图标。

Splash screen not closed

我的项目文件中的代码如下

Application.Initialize;
SplashScreen := TSplashScreen.Create(nil); 
SplashScreen.Show; 
SplashScreen.Update; 
Application.Title := 'Frame';
Application.CreateForm(TMainform, Mainform);
Application.Create;
SplashScreen.Hide; 
SplashScreen.Free;
Application.Run;

3 个答案:

答案 0 :(得分:1)

虚假的Application.Create是问题,这完全合情合理。去掉它。 Hide也毫无意义。也许这就是你所需要的:

Application.Initialize;
SplashScreen := TSplashScreen.Create(nil); 
SplashScreen.Show; 
SplashScreen.Update; 
Application.Title := 'Frame';
Application.CreateForm(TMainform, Mainform);
SplashScreen.Free;
Application.Run;

您可能还希望在调用Application.MainformOnTaskbar := True;后考虑添加Initialize

答案 1 :(得分:0)

我通常以这种方式制作闪屏: 在OnCreate活动(在您的主表单上):

  F_Splash := TF_Splash.Create(Self);
  F_Splash.ShowModal;

在启动画面窗体中,删除TTimer组件并设置间隔(例如500毫秒)。在其OnTimer活动上:

  Self.Close;

我相信这种方法比你提到的例子更有用。

答案 2 :(得分:0)

David Heffernan的答案基本上是正确的。我曾经有同样的问题。我解决了这个问题:

  Application.Initialize;
  SplashScreen := TSplashScreen.Create(nil);
  Application.MainFormOnTaskbar := True;
  SplashScreen.Show;
  SplashScreen.Update;
  Application.Title := 'Frame';
  Application.CreateForm(TMainForm, MainForm);
  SplashScreen.Free;
  Application.Run;

我还确保SplashScreen没有在代码中列为表单,但我确实在Uses子句中包含了SplashUnit。

这已经正常工作了几年。