当前位置: 首页 > news >正文

[界面]程序启动欢迎窗体(Splash) 制作方法(附原码)

举个例子,你自己看吧,挺简单的

  在许多应用软件中,启动程序后,在主导界面出现之前,有一个一般以图象为主,文字为辅的画面,通常用来显示软件或公司的主题标志、软件名称、作者、版权和版本信息等,停留数秒或按了任意键后软件进入主导界面,这个画面称为Splash画面,意思为引人注目画面。这个画面的另外一个用处是在处理耗时进程时,为用户展示一幅优美、舒心的图象。

  其实在Delphi中可以很容易实现这一技巧。下面用一个例子来逐步说明如何实现Splash画面。

  1在你的程序中增加一个窗体,把它的名字改为SplashForm,BorderStyle属性设置为bsNone,Position属性设置为poScreenCenter。

  2为SplashForm窗体增加一系列必要的构件,如Label、Panel、Image、Shape以及Bevel等。

  3使用IDE的Project|Option功能项把SplashForm窗体从Auto-Create表移到Available 表中。

  4将SplashForm窗体的Unit加入到主窗体Unit的Uses语句中。

  5在主程序的.dpr文件中加入一段控制代码,位置是在begin之后、其他代码之前,代码如下:

   SplashForm:=TSplashForm.create(Application);

   SplashForm.Show;

   SplashForm.refresh;

  其目的是在建立其他窗体及运行程序之前,建立并显示Splash窗体。

  6编写主窗体OnShow事件的响应过程。

   SplashForm.Free;

   在本例中,这段代码作用为当屏幕显示主窗体时,释放Splash窗体。

  7最后,为主程序的.dpr文件写一段延迟程序,目的是使Splash画面在屏幕上有一段停留的时间。最简单的办法使用一个无效循环,如:

   var i,x:longint

   for i:=1 to 100000 do

   x:=i;

  但是,由于机器运行速度不同,有快有慢,表现出来的效果并不理想,最好的办法是使用时间函数,预先规定Splash画面的停留时间。下列代码使Splash画面在屏幕上停留5 秒钟。

   var time1:TDateTime;

   time1:=now;

   repeat

   until time1+StrtoTime(′00:00:5′)<=now;

  当然,时间延迟代码必须在Splash画面显示之后,具体位置是在SplashForm.refresh; 语句的后面,建立程序主窗体之前。

  读者可以运用上述方法,在你的应用程序当中增加一个Splash画面,使你的程序更加漂亮。

  以下为程序源代码。其中Splash窗体借用了delphi\Demos\DB\MASTAPP\Splash。

   {PROJECT1.DPR}

   program Project1;

   uses

   Forms,SysUtils,

   Unit1 in ′Unit1.pas′ {Form1},

   Splash in ′..\..\Demos\DB\MASTAPP\Splash.pas′ {SplashForm};

   {R *.RES}

   var time1:TDateTime;

   begin

   SplashForm:=TSplashForm.Create(Application);

   SplashForm.Show;

   SplashForm.Refresh;

   time1:=now;

   repeat

   until time1+StrtoTime(′00:00:5′)<=now;

   Application.Initialize;

   Application.CreateForm(TForm1, Form1);

   Application.Run;

   end.

   {UNIT1.PAS 主窗体}

   unit Unit1;

   interface

   uses

   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

   Dialogs,splash;

   type

   TForm1 = class(TForm)

   procedure FormShow(Sender: TObject);

   private

   { Private declarations }

   public

   { Public declarations }

   end;

   var

  Form1: TForm1;

   implementation

   {R *.DFM}

   procedure TForm1.FormShow(Sender: TObject);

   begin

   SplashForm.Free;

   end;

   end.

   {SPLASH.PAS Splash窗体}

   unit Splash;

   interface

   uses

   SysUtils, Windows, Messages, Classes, Graphics, Controls,

   Forms, Dialogs, StdCtrls, ExtCtrls;

   type

   TSplashForm = class(TForm)

   Panel1: TPanel;

   Label3: TLabel;

   Bevel1: TBevel;

   Label1: TLabel;

   Image1: TImage;

   end;

   var

   SplashForm: TSplashForm;

   implementation

   {R *.DFM}

   end.

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • NLP模型笔记2022-09:hanlp所有预训练模型API接口使用
  • NLP模型笔记2022-10:nlp句法分析模型评价标准UAS/LAS
  • Visual C++ MFC 一文说尽 (推荐)(很长,没耐心就不要看了)
  • NLP模型笔记2022-11:CTB5和CTB8数据集预处理 【PennTreebank 和Chinese Treebank】
  • 完美解决 AttributeError: ‘str‘ object has no attribute ‘decode‘
  • 如何在快速启动栏创建快捷方式(转自ccrun)(原码解释)
  • NLP模型笔记2022-12:Deep Biaffine Attention for Neural Dependency Parsing【论文+源码】
  • 10分钟完成一个usb驱动程序(推荐)
  • NLP模型笔记2022-13:HanLP词性标注标签
  • NLP模型笔记2022-14:修改fastTex预训练模型的词语向量维度并保存模型
  • 2004年6月28日
  • NLP模型笔记2022-15:深度机器学习模型原理与源码复现(lstm模型+论文+源码)
  • 如何在Java应用程序中读取8位,24位Microsoft Windows位图(精品)
  • NLP模型笔记2022-16:词向量、中文词向量的训练与中文词向量论文综述
  • NLP模型笔记2022-17:实体识别、实体对齐、实体消歧、属性对齐【论文+源码】
  • Docker 笔记(2):Dockerfile
  • IDEA 插件开发入门教程
  • js中forEach回调同异步问题
  • leetcode-27. Remove Element
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • underscore源码剖析之整体架构
  • 创建一种深思熟虑的文化
  • 分布式事物理论与实践
  • 猴子数据域名防封接口降低小说被封的风险
  • 简单实现一个textarea自适应高度
  • 入手阿里云新服务器的部署NODE
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 最近的计划
  • mysql面试题分组并合并列
  • UI设计初学者应该如何入门?
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ###STL(标准模板库)
  • #数学建模# 线性规划问题的Matlab求解
  • $(function(){})与(function($){....})(jQuery)的区别
  • %check_box% in rails :coditions={:has_many , :through}
  • (1)(1.9) MSP (version 4.2)
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (三)终结任务
  • (十) 初识 Docker file
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转载)深入super,看Python如何解决钻石继承难题
  • .bat批处理(一):@echo off
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .htaccess配置重写url引擎
  • .Net Core与存储过程(一)
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET和.COM和.CN域名区别
  • @31省区市高考时间表来了,祝考试成功
  • @RestControllerAdvice异常统一处理类失效原因