怎样制作一个启动封面?(100分)

  • 主题发起人 主题发起人 boda.w
  • 开始时间 开始时间
B

boda.w

Unregistered / Unconfirmed
GUEST, unregistred user!
我的主FORM在启动时需调用很长一段时间的数据后才显示出来,我想制作一个
封面,在一启动程序是就显示这个封面,等主form调完数据后才消失.我不想用
时间做延时,仅仅靠装载数据的时间来控制封面显示的长短.
 
在工程代码里:Tshowform为你做的启动窗口类!(Tshowform.enabled:=false,否则用户能关掉它!)
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
var ShowForm:Tshowform;
begin
ShowForm:=TShowForm.create(application);
ShowForm.show;
ShowForm.update;

Application.CreateForm(TForm1, Form1);
ShowForm.hide;
ShowForm.free;

Application.Run;
end.
 
两个思路:
1. 在主form的onactive事件中显示封面(同时把所有初始化工作都放到onactive中
别忘了设个变量防止多次调用)
2. 做一个封面主form, 他的onactive中动态建立并显示原来作为主form的form,
在原来的form的OnActive事件第一句把封面主form的active置为false, OnClose中
调用封面主form的close, 封面主form的OnClose里释放原来做为主form的form
(怎么象绕口令)
 
在工程文件中加入:
CoverForm:=TCoverForm.create(applicati on);
CoverForm.show;
CoverForm.update;

在主窗体文件的 onActive事件中加入
CoverForm.Hide;
CoverForm.Free;
 
应该用delphi fan2的方法
jianl
jianl@gz168.net
jianl.yeah.net
 
看看DELPHI的例子,数据库的例子中有。
我也做过,部分代码如下
uses
main in 'main.pas' {MainFrm},
startunit in 'startunit.pas' {startfrm},
...
begin
StartFrm := Tstartfrm.Create(Application);
StartFrm.show;
StartFrm.Update;
Application.Initialize;
Application.Title := '监测系统';
StartFrm.Label1.Caption := 'Loading...'+InttoStr(i);
StartFrm.Label1.Update;
StartFrm.Label1.Caption := 'Initializing...';
Application.CreateForm(TPasswordDlg, PasswordDlg);
Application.CreateForm(TMainFrm, MainFrm);
StartFrm.Close;
StartFrm.Free;
Application.Run;
end;
 
这么简单的问题各位说的都能实现, 我只是在加上一点点点缀.
也可以在那个TStartForm, TCoverForm, or TSplashForm上应该加上一个定时器,
限定时间自动关闭, 同时再加上一个OnClick事件可以随时关闭他.
出发点就是给出足够的时间来宣传你的软件, 如果用户不喜欢的话, 他可以马上关闭
这个画面.
 
定义一个TFlashForm(启动窗口)的全局变量,这样可以在程序启动初始化就绪或
程序任意时刻操纵启动窗口
 
1. Agree delphi fan2
2 Splash windows need not free, u could use it as about box
3 If u want to free it before the main for is show u could use
try statmment
4 Agree huizhang
5 I have seen a program without source, It can use a progress bar
to show it will take how long to load the program
6 Forgive my poor english and i will have an english exam the day
after
 
弦外噪音:你可以把启动画面与About Form 共用,启动完成不要Free它,
当用户查看About时再Show出来.
 
看看delphi中的数据库例子中mastapp程序。
 
参考一下Delphi 的数据库例子中是如何启动程序封面的吧。
 
如果要在CoverForm上显示一个进度条,
哪应该怎么做呢?
 
to MicroZeng: I also want to know, and it called SpashWindow
 
创建一个窗体进度条+1或创建几个窗体进度条+1,自己看这办吧!
 
据说delphi有一种flashform专门负责此事,不过我也没用过!
 
我认为用启动的实际进程来控制启动画面的进度指示是不太乐观的,
因为想取得后来程序启动的所需时间是不可能的,最终只能是用启动
画面的进度控制后来程序的进度,或者只是简单的Show与Free启动
画面,我曾试过用线程进行控制仍不如意。如果各位大侠真能用上
进度条的话,恳请不吝赐教.
 
这个问题有多种方案,还有一种方法比前面介绍的方法显示
flashform的时间还要早,具体方法是:
在flashform的单元的初始化部分:
initialization
flashform := TFlashForm.Create(nil);
flashform.show;
flashform.update;
在主程序中:
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
flashform.close;
flashform.Free;
Application.Run;
end.

单元初始化部分在主程序运行之前执行
 
sorry too late!Thanks evry one!
 
后退
顶部