请问如何激活一个带进度条窗口?(100分)

  • 主题发起人 主题发起人 dlin
  • 开始时间 开始时间
D

dlin

Unregistered / Unconfirmed
GUEST, unregistred user!
在用clientsocket连接服务器时需要很长时间,为了避免用户以为死机,我加了一个FORM_WAIT
上去在 这个FORM_WAIT上只有一个进度条,一个时钟,当连接服务器时这个带进度条的FORM_WAIT启动,
当clientsocket已经连接到服务器时这个FORM_WAIT关闭主窗口FROM_MAIN出现.
我是这样做的在FROM_MAIN的oncreate时间中启动FORM_WAIT,
FORM_WAIT:=tFORM_WAIT.create(application);
FORM_WAIT.showmodal;

在clientsocket的ONCONNECT
事件中关闭FORM_WAIT
FORM_WAIT.close;

但是运行的效果好象是两个窗口都死机了,而且当clientsocket已经连接到服务器时,
FORM_WAIT才运行进度条?
请各位高手指点迷津!!!

(其实我要做的跟delphi的启动界面差不多的效果)
 
不要把form_wait的创建放在,FORM—MAIN的创建中,放在工程中
 
你不能用ShowModal,因为用ShowModal后,窗口就获得了控制权,只有等它关闭后才会执行它
下面的代码,所以你只能用Show,而那个窗口的FormStyle最好设成fsStayOnTop,我在一个
程序里就是这样做的。
 
在上面的程序中,你在Form_Main的Create事件中ShowModal后,只有在那个窗体关闭后,
Form_Main才会接着完成Create事件。
 
这样多烦人啊,我做Ftp的时候是把ftp控件放在那个showmodal出来的窗上,然后在那更新
progressbar。反正2个unit互相uses,要引用主form上的东东也是很容易的。
 
formwait应该放在clientsocket的onconnecting里或其它的合适事件中,不能放在oncreate中。
onlookup和onconnecting你可以选择其一。
不要用showmodal,show就可以了。showmodal要等待返回值。
 
1、不要 ShowModal ,Show 就可以了。
2、Show 之后加入 FormWait.Update ,否则窗口没有事件刷新。
3、OnTimer 事件里也加入 FormWait.Update 。
 
关于这个问题,它自带的帮助里不是有嘛!
进度条是建在form5上的,差不多这意思,再怎么折腾就要看你自己了,其实你可以先让进度条先跑个20
begin
Application.Initialize;
with TForm5.Create(nil) do
try
ProgressBar1.Max := 100;
Show; // show a splash screen contain ProgressBar control
Update; // force display of Form5
Application.CreateForm(TForm1, Form1);
ProgressBar1.StepBy(25);
Application.CreateForm(TForm2, Form2);
ProgressBar1.StepBy(25);
Application.CreateForm(TForm3, Form3);
ProgressBar1.StepBy(25);
Application.CreateForm(TForm4, Form4);
ProgressBar1.StepBy(25);
finally
Free;
end;
Application.Run;
end.
 
多人接受答案了。
 
后退
顶部