摘自《葵花宝典》:
Delphi在启动时会首先显示一个图片,等到将所有的初始化工作全做完后该图片自动消失。为达到这一效果,建立一个示例程序。
建立一个新Application,包括两个Form,其中Form1为主窗口,Form2为要显示的图片Form,不妨将Form2的边框类型设为无,同时在Form2中加入一个TImage类的构件Image1,Align属性为Client,AutoSize设为True,然后为Image1指定任意一个图片。
选Project1/Options菜单,点取Application页,将Form2从左边列表框中移到右边列表框,这样Project1.dpr源程序就不会生成建立Form2的代码。下一步是手工修改Project1.DPR源代码,因为Form2应该在Form1之前建立并显示,但不能使用Application的CreateForm方法(第一个用此方法建立的Form被认为是主Form),具体的代码如下,当运行至Application.CreateForm(...)一行时Form2已经建立并显示出来,然后该行建立主Form并激发主Form的OnCreate事件,你可以在OnCreate事件处理过程中完成你的初始化工作。
Project1.dpr program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize; {程序初始化}
Form2 := TForm2.Create(Application); {建立徽标Form}
Form2.Show; {显示徽标Form}
Form2.Update; {重画徽标Form,确保其中的图片被显示出来}
Application.CreateForm(TForm1, Form1); {建立主Form}
Form2.Hide; {隐藏徽标Form,使主Form显示出来}
Form2.Free; {释放徽标Form占用的资源}
Application.Run; {程序运行}
end.
在主Form的OnCreate事件处理过程中我们用一些延时代码来模拟耗时的初始化工作,这样可以更清楚地看到Form2显示并停留数秒,直到主Form的OnCreate事件处理过程执行完毕后自动消失。
Unit1.pas unit unit1;
interface
uses
Windows, Messages, SysUtils,
Classes, Graphics, Controls,
Forms, ExtCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{ OnCreate事件处理过程,延时五秒 }
procedure TForm1.FormCreate(Sender: TObject);
var
CurrTime: TSystemTime;
Sec: Word;
begin
GetSystemTime(CurrTime);
Sec := CurrTime.wSecond + 5;
while Sec>CurrTime.wSecond do
GetSystemTime(CurrTime);
end;
end.
执行这个程序,会看到令人满意的效果:启动画面成功地显示出来,而且当鼠标移至画面上时会自动变成沙漏形状,五秒钟后画面消失,主窗口出现。