Delphi 7如何制作一个引人入胜的动画式长尾词的splashscreen?

2026-04-10 16:051阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计510个文字,预计阅读时间需要3分钟。

Delphi 7如何制作一个引人入胜的动画式长尾词的splashscreen?

当我的应用加载他的数据库时,我正尝试制作动态动画的闪屏。我已经创建了一个启动画面,但希望转换数据库时,图像能从左向右移动。直接在查找一段时间,但找到的只有进度条。

当我的应用加载他的数据库时,我正在尝试制作动画的闪屏.
我已经创建了一个启动画面,但我希望在转换数据库时使图像从左向右“移动”.一直在寻找一段时间,但我能找到的只是进度条……

这是我的代码:

SplashScreen := TSplashScreen.Create(Application) ; SplashScreen.Show; Application.Initialize; SplashScreen.Update; SplashScreen.lblStatus.Caption:='Loading...'; SplashScreen.Update; SplashScreen.lblStatus.Caption:='Updating database...'; SplashScreen.Update; Application.Initialize; Application.CreateForm(TfmMain, fmMain); Sleep(1000); Application.CreateForm(TfmPrefs, fmPrefs); Application.CreateForm(TfmCode, fmCode); Application.CreateForm(TfmEmps, fmEmps); Application.CreateForm(TfmRest, fmRest); Application.ShowMainForm:=FALSE; SplashScreen.Hide; SplashScreen.Free; Application.Run;

在我的splashscrren表单上,我创建了5个相同图像的副本,并且在创建主表单时,我希望图像是可见的,而不是交替显示… ex:

Delphi 7如何制作一个引人入胜的动画式长尾词的splashscreen?

while my db loads... begin Splashscreen.Image1.Visible:=FALSE; SplashScreen.Update; Sleep(25); SplashScreen.Image1.Visible:=FALSE; SplashScreen.Update; SplashScreen.Image2.Visible:=TRUE;....

等等!

有什么想法吗?

在启动期间在主线程中做大量工作(比如初始化数据库和许多表单)
飞溅屏幕效果不佳.主线程太忙了,无法对GUI做任何事情.将Sleep放入代码中将不起作用,因为这将阻止主线程完成任何工作.

这有两个选择:

>在另一个线程中进行数据库初始化.
有时也只是初始化主窗体是一个不错的选择.
数据库线程可以通过PostMessage调用将进度消息发送到splash表单.
>在单独的线程中启动启动画面.这有点棘手,因为你可能不会使用另一个线程的VCL.
此外,您必须避免阻止消息队列.
幸运的是,Peter Below已经很好地展示了如何使用windows api调用来完成threaded splash screen.

此SO线程中有更多信息:displaying-splash-screen-in-delphi-when-main-thread-is-busy.

本文共计510个文字,预计阅读时间需要3分钟。

Delphi 7如何制作一个引人入胜的动画式长尾词的splashscreen?

当我的应用加载他的数据库时,我正尝试制作动态动画的闪屏。我已经创建了一个启动画面,但希望转换数据库时,图像能从左向右移动。直接在查找一段时间,但找到的只有进度条。

当我的应用加载他的数据库时,我正在尝试制作动画的闪屏.
我已经创建了一个启动画面,但我希望在转换数据库时使图像从左向右“移动”.一直在寻找一段时间,但我能找到的只是进度条……

这是我的代码:

SplashScreen := TSplashScreen.Create(Application) ; SplashScreen.Show; Application.Initialize; SplashScreen.Update; SplashScreen.lblStatus.Caption:='Loading...'; SplashScreen.Update; SplashScreen.lblStatus.Caption:='Updating database...'; SplashScreen.Update; Application.Initialize; Application.CreateForm(TfmMain, fmMain); Sleep(1000); Application.CreateForm(TfmPrefs, fmPrefs); Application.CreateForm(TfmCode, fmCode); Application.CreateForm(TfmEmps, fmEmps); Application.CreateForm(TfmRest, fmRest); Application.ShowMainForm:=FALSE; SplashScreen.Hide; SplashScreen.Free; Application.Run;

在我的splashscrren表单上,我创建了5个相同图像的副本,并且在创建主表单时,我希望图像是可见的,而不是交替显示… ex:

Delphi 7如何制作一个引人入胜的动画式长尾词的splashscreen?

while my db loads... begin Splashscreen.Image1.Visible:=FALSE; SplashScreen.Update; Sleep(25); SplashScreen.Image1.Visible:=FALSE; SplashScreen.Update; SplashScreen.Image2.Visible:=TRUE;....

等等!

有什么想法吗?

在启动期间在主线程中做大量工作(比如初始化数据库和许多表单)
飞溅屏幕效果不佳.主线程太忙了,无法对GUI做任何事情.将Sleep放入代码中将不起作用,因为这将阻止主线程完成任何工作.

这有两个选择:

>在另一个线程中进行数据库初始化.
有时也只是初始化主窗体是一个不错的选择.
数据库线程可以通过PostMessage调用将进度消息发送到splash表单.
>在单独的线程中启动启动画面.这有点棘手,因为你可能不会使用另一个线程的VCL.
此外,您必须避免阻止消息队列.
幸运的是,Peter Below已经很好地展示了如何使用windows api调用来完成threaded splash screen.

此SO线程中有更多信息:displaying-splash-screen-in-delphi-when-main-thread-is-busy.