Delphi带进度条的状态栏实例
带进度条的状态栏
实例说明
上网浏览网页的读者都用过IE浏览器,在打开网页的过程中,浏览器下面的状态栏中有一个进度条显示当前网页的载入进度。这样的状态栏使界面显得更加丰富多彩,并且非常实用。在程序中怎样实现这样的状态栏呢?本例将设计一个带进度条的状态栏,并且在程序运行中进度条可以显示其进度,运行结果如图1.10所示。

技术要点
可视组件的Parent属性表示其父窗体,且该组件会在其父窗体中显示。在程序设计期间,进度条只能被放在窗体或其他容器中,所以只能在程序运行时来改变此属性。但是读者应该注意,组件的Parent属性只能赋予一个TWinControl继承下来的组件,否则编译器会提示出错。Delphi中的APPlication对象提供的ProcessMessages方法可以从消息队列中取出属于该程序的消息,循环过程中执行该方法即可响应将窗口的消息分发到消息目标窗口中,从而得到相应。
实现过程
1.新建一个标准工程,创建一个新窗体,默认主窗体的Name属性为Form1。
2.在窗体中添加TImage、TButton、TStatusBar、TXPManifest组件。
3.设置TImage组件的Align属性为alClient,设置Stretch属性为True。
4.程序代码如下:
procedure TForm1.Button3Click(Sender: TObject);
var
I,Count:integer;
Pane1Windth:integer;
begin
StatusDrawRect.Left:=100;
StatusDrawRect.Right:=3000;
StatUsDrawRect.Top:=2;
StatusDrawRect.Bottom:=20;
Progress:=TProgressBar.Create(Form1);//在Form1窗体上创建Progress控件
Count:=300;//设置进度条的最大值
Pane1Windth:=StatusBar1.Panels[2].Width;
//设置进度条的宽度和信息栏相等
StatusBar1.Panels.Items[2].Width:=150;//改变宽度
Statusbar1.Repaint;
with Progress do
begin
//--------------------------
Top:=StatusDrawRect.Top;
Left:=StatusDrawRect.Left;
Width:=StatusDrawRect.Right-StatusDrawrect.Left;
Height:=StatusDrawRect.Bottom-StatusDrawRect.Top;
//---------------------------
Visible:=True;
Try
Parent:=StatusBar1;//将进度条放在信息栏上
Min:=0;
Max:=Count;//进度套最大值
Step:=1;
For I:=1 to Count do
begin
sleep(10);
Application.ProcessMessages;
Stepit;
end;
ShowMessage('完成操作,释放此组件');
Finally
Free;//释放进度条
End;
end;
StatusBar1.Panels.Items[2].Width:=Pane1windth;//恢复宽度
end;
end.