显示软件封面通常情况下是这样做的 转载的例子 可以参考一下DPR文件
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.{ 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;
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.{ 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;
procedure TForm1.Formshow(Sender: TObject);
begin
sleep(3000);
Application.CreateForm(TForm2, Form2);
end;
改成这个就ok了。给分吧!
form2:=Tform2.create(application);
form2.Show;
form2.Update;
sleep(3000);
Application.Title := 'project name';
.....
form2.Hide;
form2.Free;
Application.Run;
procedure TForm1.Formshow(Sender: TObject);
begin
sleep(3000);
Application.CreateForm(TForm2, Form2);
end;
Forms,
UMain in 'UMain.pas' {FrmMain},
USplash in 'USplash.pas' {FrmSplashScreen}, // 封面{$R *.res}begin
Application.Initialize;
try
FrmSplashScreen:=TFrmSplashScreen.Create(Application);
//见下面的注释
FrmSplashScreen.Show;
FrmSplashScreen.Update;
Application.CreateForm(TFrmMain, FrmMain);
finally
FrmSplashScreen.Free;
end;
Application.Run;
end.注意:
1。上面的FrmSplashScreen:=TFrmSplashScreen.Create(Application);不能改为Application.GreatFrom(TFrmSplashScreen,FrmSplashScreen).这两个函数的区别在于Application.GreatFrom会将第一次被调用是创建的窗口作为程序的主窗口,程序将随着这个窗口的结束而结束。
2。最好用try...finally...end块,这样可以保证出错时封面窗口所占用的资源也被释放。
program myProg;uses
Forms,
UMain in 'UMain.pas' {FrmMain},
USplash in 'USplash.pas' {FrmSplashScreen}; //封面
{$R *.res}begin
Application.Initialize;
try
FrmSplashScreen := TFrmSplashScreen.Create(Application);//见后
sleep(3000); //如果你需要的话
FrmSplashScreen.Show;
FrmSplashScreen.Update;
Application.CreateForm(TFrmMain, FrmMain);
finally
FrmSplashScreen.Free;
end;
Application.Run;
end.注意:
1。FrmSplashScreen := TFrmSplashScreen.Create(Application);
不能改为
Application.CreateForm(TFrmSplashScreen, FrmSplashScreen);
这两个函数的区别是Application.CreateForm会将第一次被调用时创建的窗口作为主窗口,程序将随着主窗口的结束而结束。
2。最好用try...finally,这样出错时FrmSplashScreen占用的资源也能释放。
程序也就退出了。你把所有的代码都贴出来会更好判断。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm2 = class(TForm)
RadioGroup1: TRadioGroup;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementationuses Unit3, Unit4, Unit1;{$R *.dfm}procedure TForm2.Button2Click(Sender: TObject);
begin
form2.Close;
end;procedure TForm2.Button1Click(Sender: TObject);
begin
case RadioGroup1.itemindex of
0:(form3.show);
1:(form4.show); end;
end;
end.
那就把上面的代码改为(换一下次序):
FrmSplashScreen.Show;
FrmSplashScreen.Update;
sleep(3000); //如果你需要的话
procedure TForm1.Formshow(Sender: TObject);
begin
sleep(3000);
form2.visible:=true;
end;
//////////////////////////
procedure TForm2.Formshow(Sender: TObject);
begin
form1.close;
end;
我第一次写程序时用的就是这种方法。
首先创建两个窗体,然后project->options->将Form2有自动创建该为手动创建
下面写代码
unit unit1;
....
....
uses unit2;
procedure TForm1.FormShow(sender:TObject);
begin
with TForm2.Create(Form2) do
begin
show;
sleep(2000)
refresh;//可以不加
free;
end;
end;
可以去这里看一看吧
begin
sanpin.ShowModal;
end;
这个可以的,先创建sanpin