如何用DELPHI7制作程序启动封面?

如题所述

第1个回答  2022-10-12
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
解析:

一、 启动封面实现思路

为了实现启动封面的效果,我们要在delphi中使用两个窗体。一个窗体A用于显示程序的启动封面,而另一个为程序的主窗体B包含了您所设计的种种功能。窗体A是一个非规则窗口,其标题栏及最大化、最小化按钮和边框都被屏蔽掉了,其用一个Image控件装载一个图片文件来显示程序的封面,并用一个timer控件实现该窗口的定时关闭。为了方便程序使用者快速跳过启动封面直接进入程序主窗体,我们还要设置一个click事件来关闭窗体A并调用主窗体B。

二、操作具体步骤

1、 请先在delphi6.0中创建一个应用程序及主窗体。选择主菜单下的File/New/Application命令,这个操作将创建一个应用程序和一个主窗体。随后将主窗体的name属性由form1改为Mainform,主窗体的其余情况在此不详述,请根据您所设计的应用程序功能自行操作。

2、 制作程序启动封面的图片。图片的大小您应该细细考虑一下,为此笔者还专门将foxmail4.0的启动封面用抓图软件抓了下来,在绘图软件中细细测量了一下。其大小为380×240,笔者觉得foxmail这款主流软件在设计启动封面的大小时一定进行过周全的考虑。故建议您也采用这个尺寸,当然您也可以自行设置启动封面的大小。(请考虑当今流行的屏幕主分辨率是800×600)在制作启动封面时要考虑您所编制软件的功能及名称,软件的封面是给人的第一印象。假如您的软件是要在市场上推广的话,建议您找专业的美工设计师来设计一番为好!笔者在此偷懒了一番,随意去因特网抓了一幅风景画用paint shop pro缩小了图片的尺寸便做为了封面。另外图片的格式最好为gif或者格式,这样在编译出来的程序不致于太肥。

3、 增加封面窗体,请点击delphi工具栏中的new form按钮。创建一个新窗体,并在其上添加一个 Image控件,并且选中Image控件并在属性框中找到picture属性点右边的小按钮。在弹出的图像编辑窗口中,单击load键载入您所制作的封面。然后将Image控件的Autosize属性设为True,这样Image控件便能自动适应图片的大小了。为了实现启动封面的定时关闭,再添加一个Timer控件,将其enable属性设为true以触发ontimer事件,Interval属性设为5000(即5秒),这两项属性操作便是在窗体显示5秒后触发ontimer事件来关闭窗口。

图一

4、 设置封面窗体属性使之符合启动封面要求。请修改下列封面窗体属性:

Position = PoscreenCenter

运行时居于屏幕中央

Autosize = true

自动适应Image控件,使启动图片完整显示

BorderStyle = bsnone

窗口无标题栏及最大化、最小化及关闭按钮和边框

Name = splashform

三、 程序代码解析

选择主菜单下的Project/View Scource 命令,打开这个项目的项目文件。根据下列代码进行修改。

program Project2;

uses

Forms,Controls,

Unit1 in 'Unit1.pas' {MainForm},

Unit2 in 'Unit2.pas' {SplashForm};

{$R *.res}

begin

Application.Initialize;

SplashForm :=TSplashForm.Create(Application);

创建splash窗体

SplashForm.ShowModal;

以模式对话框的方式显示splash窗体

if (SplashForm.ModalResult = mrOK) then

如果定时时间到或单击了窗体上的图形

begin

Application.Title := '测试Splash窗体';

设置应用程序的标题

Application.CreateForm(TMainForm, MainForm);

自动方式创建的主窗体

SplashForm.Hide;

将启动封面窗体隐藏

SplashForm.Release;

将启动封面窗体清除

Application.Run;

end;

end.

随后在splash窗体上编写下列事件代码

procedure TSplashForm.Timer1Timer(Sender: TObject);

begin

SplashForm.ModalResult:= mrOK;

定时时刻到后的事件处理程序

end;

procedure TSplashForm.Image1Click(Sender: TObject);

begin

SplashForm.ModalResult:= mrOK;

单击splash窗体上图像的事件处理程序

end;