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

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 jk_one 的 blog

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


  发表时间:2004-8-10
作者:未知[获得此文档时候没有作者记录,深感抱歉,本文档全为转载]
  

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

  在许多应用软件中,启动程序后,在主导界面出现之前,有一个一般以图象为主,文字为辅的画面,通常用来显示软件或公司的主题标志、软件名称、作者、版权和版本信息等,停留数秒或按了任意键后软件进入主导界面,这个画面称为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.

 

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

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top