我的程序有4个form, form2创建时,需要加载大量的数据显示在其树上,需要时间太长了。这样,打开程序时,要等好久才能显示出来,所以,我想加个启动页。请问:
如何制作启动页,就是显示一form在加载数据,判断加载完了后,自己消失,主窗体打开。我没搞过这个,查了好多资料也不行,谁能给个代码看看啊?
如何制作启动页,就是显示一form在加载数据,判断加载完了后,自己消失,主窗体打开。我没搞过这个,查了好多资料也不行,谁能给个代码看看啊?
解决方案 »
- DELPHI设置快捷键问题
- 在DEPHI中,为何不能改变窗体的位置????
- 关于DBgrid的滚动条
- 我发现无论是创建Active Server Object、Automation Object、COM Object还是Transactional Object,都能把它们安装到组件服务中去,有点
- 动态更改image图像问题
- ◢▓◣非模态的子窗体不能接收到所有的键盘消息,主窗体接收了部分快捷键,该如何办?
- Delphi里面关于ADO的奇怪问题
- 怎么实现QQ式样的列表框?
- 函数返回 TStringList 的释放?
- 打包成exe後,在別的機器運行是否需要其他dll庫文件 使用BDE連接數據庫
- 在ADOQuery1.sql.add(str1)的str中的單引號,#號和括號要怎樣注意細節?
- 菜鸟求教:怎么在listview中动态增加一列?
你可以在加载数据前先调用你的启动页,加载完后,关闭启动页就可以了。比如在form1显示前先显示form2(form2就可以作启动页,在上面放一个label控件,和一个进度条)
procedure TForm1.FormShow(Sender: TObject);
var
i,j:Integer;
begin
Application.CreateForm(TForm2, Form2);
Form2.pb1.Min:=0;
Form2.pb1.Max:=20;
Form2.pb1.Position:=0;
Form2.Show;
Application.ProcessMessages;
j:=1;
for i:=0 to 20 do
begin
Sleep(1000);
Form2.pb1.Position:=Form2.pb1.Position+1;
end;
Form2.Free;
Form2:=nil;
end;
Forms, SysUtils,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
UDMDATA in 'UDMDATA.pas' {DMDATA: TDataModule},
Unit4 in 'Unit4.pas' {Form4},
Splash in 'Splash.pas' {SplashForm};{$R *.res}
var time1:TDateTime;
begin
Application.Initialize;
Application.CreateForm(TDMDATA, DMDATA);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
SplashForm:=TSplashForm.Create(Application);
SplashForm.Show;
SplashForm.Refresh;
time1:=now;
repeat
until time1+StrtoTime('00:00:02')<=now;
SplashForm.Visible :=false;
Application.Run;
end.
Application.CreateForm(TDMDATA, DMDATA);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
SplashForm:=TSplashForm.Create(Application);
SplashForm.Show;
SplashForm.Refresh;
time1:=now;
repeat
until time1+StrtoTime('00:00:02')<=now;
SplashForm.Visible :=false;
Application.Run;
以上有问题!
可以改为:
Application.Initialize;
SplashForm:=TSplashForm.Create(Application);
SplashForm.Show;
SplashForm.Refresh;
Application.CreateForm(TDMDATA, DMDATA);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
SplashForm.close
Application.Run;