delphi之完美Splash方案

前言:网上有很多介绍delphi创建闪屏的代码,大多只是在程序开启前显示一个闪屏,但是却没有说如何在闪屏上显示程序加载的进度,于是笔者有意思介绍一下这种闪屏方式。

1.创建一个窗体(TfrmSplash),放入一个TImageBox,加载一幅图片,调整好TImageBox与图片的大小,然后在其上放入一个TLabel,name=LblStatus,用于显示加载进度文字。然后将TfrmSplash设置为不自动创建。

2.加入如下代码(代码很简单,就不用解释太多)

Delphi代码  

  1. unit UntFormSplash;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, ExtCtrls, StdCtrls;
  6. type
  7. TfrmSplash = class(TForm)
  8. Image1: TImage;
  9. LblStatus: TLabel;
  10. private
  11. { Private declarations }
  12. FParam:Pointer;
  13. public
  14. { Public declarations }
  15. class function Execute(AParam:Pointer):Boolean;
  16. procedure SetStatusText(Value: string);
  17. published
  18. property StatusText : string write SetStatusText;
  19. end;
  20. var
  21. SplashForm: TfrmSplash;
  22. implementation
  23. {$R *.dfm}
  24. { TfrmSplash }
  25. class function TfrmSplash.Execute(AParam:Pointer): Boolean;
  26. begin
  27. with TfrmSplash.Create(nil) do
  28. try
  29. FParam := AParam;
  30. Result := ShowModal = mrOk;
  31. finally
  32. Free;
  33. end;
  34. end;
  35. procedure TfrmSplash.SetStatusText(Value: string);
  36. begin
  37. LblStatus.Caption := Value;
  38. Update;  //这句非常重要,不加的话,界面会阻塞,文字也就不会更新显示
  39. Sleep(1000); //这句根据自己实际情况来调整,主要是怕闪屏太快关闭,达不到效果
  40. end;
  41. end.

3. 在项目的.dpr文件中加入如下代码:

Delphi代码  

  1. begin
  2. Application.Initialize;
  3. SplashForm := TfrmSplash.Create(Application);
  4. SplashForm.Show;
  5. SplashForm.Update;
  6. SplashForm.StatusText := ‘准备启动...‘;
  7. SplashForm.Update;
  8. Application.CreateForm(TDM, DM);
  9. Application.CreateForm(TfrmMain, frmMain);
  10. SplashForm.Hide;
  11. SplashForm.Free;
  12. Application.Run;
  13. end.

4.这一步就是主窗体加载数据的时候,边加载边更新闪屏的进度文字了:

Delphi代码  

  1. procedure TfrmMain.FormCreate(Sender: TObject);
  2. begin
  3. with SplashForm do
  4. try
  5. StatusText := (‘开始初始化内存...‘);
  6. FCacheHash := TStringHashMap.Create(CaseInsensitiveTraits, 255);
  7. FCurrentClients := TList.Create;
  8. //VST.NodeDataSize := SizeOf(TTagCustomListItem);
  9. //VST.RootNodeCount := 2;
  10. VST.NodeDataSize := SizeOf(TMyTreeNodeDate);
  11. StatusText :=(‘初始化内存完成‘);
  12. StatusText :=(‘开始加载客户端列表...‘);
  13. BuildGroupTree;
  14. StatusText :=(‘加载客户端列表完成‘);
  15. StatusText :=(‘开始加载分组信息...‘);
  16. AddELVDefaultGroup;
  17. StatusText :=(‘开始初始化内存‘);
  18. StatusText :=(‘开始初始化数据...‘);
  19. G_DefNetImpl := TDefNetImpl.Create();
  20. G_DefNetImpl.RegisterObserver(Self);
  21. StatusText :=(‘全部数据加载完毕,程序即将启动...‘);
  22. finally
  23. end;
  24. end;

收功,试着运行一下吧,一个漂亮的splash诞生了.

http://peirenlei.iteye.com/blog/521581

时间: 2024-08-23 06:53:16

delphi之完美Splash方案的相关文章

Delphi XE7的Splash 功能

Delphi XE5,XE6,XE7编译的程序在Android下启动会有一段时间黑屏,以前需要用Java扩展Activity增加Splash显示, 现在Delphi XE7增加了Splash Image显示功能了. 步骤: 1.鼠标右键点击工程,选择Options, 2.进入Application分页 3.勾选Include Splash Image 4.选择您的Splash Image文件 5.设置Splash Tile mode和Splash Gravity Splash Tile Mode

Microsoft.AspNet.Web.Optimization.Bundle的完美替换方案

Web应用程序中包含大量的样式(css)和脚本(js)文件,这些文件的引用.管理和发布有很多解决方案.在Asp.Net MVC应用程序中,大家最熟悉的解决方案应属Microsoft.AspNet.Web.Optimization这个package.这个package的使用也挺方便,对我来说,它依赖太多package,这点不合我胃口,我是比较崇尚精简的那种.接下来介绍这个package的使用及如何将它完美的替换. 1. Microsoft.AspNet.Web.Optimization的Bundl

IIS曝高危漏洞 安全狗发布完美修复方案

IIS曝高危漏洞,安全狗紧急响应,第一时间更新防护规则,以防御该漏洞攻击,为服务器和网站用户提供实时保护. 在微软发布的2015年4月安全补丁中,修复了HTTP.sys 中一处允许远程执行代码漏洞(CVE-2015-1635).而这个高危漏洞也掀起了网络世界的攻击风暴.据悉,该漏洞利用代码已在国外技术网站Pastebin上公开,黑客只要发送恶意数据包直打安装IIS的服务器,就可导致系统蓝屏崩溃. 这个安全漏洞对服务器系统产生的影响不小,所有安装了IIS 6.0以上版本的Windows Serve

mybatis+spring mvc 完美整合方案 查询,保存,更新,删除自动生成

Jeecg-Mybatis版本代码生成器演示视频 代码下载:JEECG-mybatis参考学习版本 简要说明 JEECG[J2EE Code Generation] 代码生成:根据表生成对应的Bean,Service,Dao,Action,XML,JSP等,增删改查功能直接使用,实现了快速开发 jeecg-mybatis-framework,采用SpringMVC+Mybatis等主流框架 支持数据库: Mysql,Oracle10g 前端:使用Jquery和Easyui技术.JS封装简洁,操作

Linux终极shell-zsh的完美配置方案!——oh-my-zsh

Zsh 介绍 Zsh 兼容 Bash,据传说 99% 的 Bash 操作 和 Zsh 是相同的 Zsh 官网:http://www.zsh.org/ 先看下你的 Linux支持哪些 shell:cat /etc/shells,正常结果应该是这样的: /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh 默认 CentOS / Ubuntu / Mac 系统用的是 Bash,倒也不是说 Bash 不好,而是说我们有更好的选择. Z

ionic3-ng4学习见闻--(轮播图完美方案)

ionic上 轮播图是最坑的插件了吧,各种bug和 问题. 事件也不好用.. 于是,我终于搞出来了一个完美的方案, 适用于,动态获取轮播图数据,自动循环播放,跳转其他页面回来后自动播放,手指触摸后自动播放. 至于有什么问题,还要大家多去试试,话不多说,开搞. 1.在使用轮播图的 page页面 ts文件中 import { Slides } from 'ionic-angular'; import { ViewChild } from '@angular/core'; 在class下面添加 @Vi

maven项目引入sqljdbc4 找不到包的完美 解决方案。

今天碰到了这个问题,解决了,顺便做一下记录.首先来 重现 一下这个问题,maven install报错,说 找不到这个包,但是其实 我已经安装了. 我们 再来 看看 maven本地仓库里面有 什么,这说明我们的包根本没下载下来,网上说 可以 先 下载jar包,然后 再用 mvn install安装这些jar包,可是可以,但是太麻烦,而且问题没有根本性得到解决. 我们 再来看看maven中的介绍,那么Clojars是什么 东西呢?原来是另外一种单独的仓库. 下面 来 说说完美 解决 方案,网上说的

MyEclipse10安装checkStyle与findBugs插件--详细完美结局-费元星

本人QQ:971751392(屌丝一枚) Myeclipse10安装checkStyle与findBugs插件详细完美结局方案: 资源一: http://download.csdn.net/detail/oceans521/8202353  CSDN资源 资源二:如果上面不能访问,则访问官网,如下 http://findbugs.sourceforge.net/downloads.html findBugs: 原创版权:QQ971751392 (费元星) 1.将下载回来的zip包解压,得到文件夹

Unity视频播放可添加控制按钮方案

一般在游戏中,经常会有一段游戏故事背景视频,而且有一个跳过的按钮,点击后会跳过视频进入游戏.经过资料搜索,一般在Unity的话,在手机终端会调用 Handheld.PlayFullScreenMovie("test.mp4",Color.black, FullScreenMovieControlMode.CancelOnInput); 最后一个参数总共有4种: FullScreenMovieControlMode.CancelOnInput, FullScreenMovieContro