节约一点分吧 //为什么不去查精华区呢?
----------------------------------------------------------------------
话题098592的标题是: 怎样制作一个启动封面? (100分)
分类:非技术问题 boda.w (1999-1-21 0:22:00)  
我的主FORM在启动时需调用很长一段时间的数据后才显示出来,我想制作一个
封面,在一启动程序是就显示这个封面,等主form调完数据后才消失.我不想用
时间做延时,仅仅靠装载数据的时间来控制封面显示的长短. 
 
delphi fan2 (1999-1-21 0:32:00)  
在工程代码里: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. 
Another_eYes (1999-1-21 0:34:00)  
两个思路:
1. 在主form的onactive事件中显示封面(同时把所有初始化工作都放到onactive中
别忘了设个变量防止多次调用)
2. 做一个封面主form, 他的onactive中动态建立并显示原来作为主form的form, 
在原来的form的OnActive事件第一句把封面主form的active置为false, OnClose中
调用封面主form的close, 封面主form的OnClose里释放原来做为主form的form
(怎么象绕口令) 
 
yuan (1999-1-21 1:03:00)  
在工程文件中加入:
  CoverForm:=TCoverForm.create(applicati on); 
  CoverForm.show; 
  CoverForm.update;     
在主窗体文件的 onActive事件中加入
  CoverForm.Hide;
  CoverForm.Free;   
 
jianl (1999-1-21 9:02:00)  
应该用delphi fan2的方法jianl
[email protected]
jianl.yeah.net 
 
bluebird (1999-1-21 15:50:00)  
看看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; 
 
huizhang (1999-1-21 17:58:00)  
这么简单的问题各位说的都能实现, 我只是在加上一点点点缀.也可以在那个TStartForm, TCoverForm, or TSplashForm上应该加上一个定时器, 
限定时间自动关闭, 同时再加上一个OnClick事件可以随时关闭他.出发点就是给出足够的时间来宣传你的软件, 如果用户不喜欢的话, 他可以马上关闭
这个画面. 
 
Zangwill (1999-1-22 17:31:00)  
定义一个TFlashForm(启动窗口)的全局变量,这样可以在程序启动初始化就绪或
程序任意时刻操纵启动窗口 
 
CJ (1999-1-22 22:36:00)  
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 
 
草动 (1999-1-23 2:01:00)  
弦外噪音:你可以把启动画面与About Form 共用,启动完成不要Free它,
当用户查看About时再Show出来. 
 
yaojiaqing (1999-1-23 3:36:00)  
看看delphi中的数据库例子中mastapp程序。 
 
SupWang (1999-1-23 19:47:00)  
参考一下Delphi 的数据库例子中是如何启动程序封面的吧。 
 
MicroZeng (1999-1-24 15:24:00)  
如果要在CoverForm上显示一个进度条,
哪应该怎么做呢? 
 
CJ (1999-1-24 22:04:00)  
to MicroZeng: I also want to know, and it called SpashWindow 
 
delphi fan2 (1999-1-25 0:01:00)  
创建一个窗体进度条+1或创建几个窗体进度条+1,自己看这办吧! 
 
lxp (1999-1-25 1:20:00)  
据说delphi有一种flashform专门负责此事,不过我也没用过! 
 
草动 (1999-1-26 1:02:00)  
我认为用启动的实际进程来控制启动画面的进度指示是不太乐观的,
因为想取得后来程序启动的所需时间是不可能的,最终只能是用启动
画面的进度控制后来程序的进度,或者只是简单的Show与Free启动
画面,我曾试过用线程进行控制仍不如意。如果各位大侠真能用上
进度条的话,恳请不吝赐教. 
 
redforks (1999-1-27 20:10:00)  
这个问题有多种方案,还有一种方法比前面介绍的方法显示
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.单元初始化部分在主程序运行之前执行