您的位置首页百科知识

Delphi7制作下载进度条

Delphi7制作下载进度条

的有关信息介绍如下:

Delphi7制作下载进度条

Delphi7制作下载进度条,通过另一个窗体显示进度条。

打开Delphi7集成开发环境,在默认工程的Form1窗体放一个Button1控件和一个Timer1控件,设置Timer1的Enabled属性为False.

在Unit1.pas文件的implementation下添加以下代码:

uses Gauges;

var Gauge1: TGauge;

这个控件用来显示进度。

双击Button1进入OnClick事件方法:

procedure TForm1.Button1Click(Sender: TObject);

var

form2: TForm;

begin

form2 := TForm.Create(nil);

form2.BorderStyle := bsSizeToolWin;

form2.Width := 400;

form2.Height := 80;

form2.Position := poDesktopCenter;

Gauge1 := TGauge.Create(form2);

Gauge1.MinValue := 0;

Gauge1.MaxValue := 100;

Gauge1.Width := form2.ClientWidth - 40;

Gauge1.Height := 30;

Gauge1.Left := 20;

Gauge1.Top := (form2.ClientHeight - Gauge1.Height) div 2;

Gauge1.Parent := form2;

Timer1.Interval := 100;

Timer1.Enabled := True;

form2.ShowModal;

form2.Free;

Timer1.Enabled := False;

end;

解释一下:

创建一个无Owner的form2,设置显示位置及大小,创建以form2为Owner的进度条,这样form2销毁时候进度条也会随着销毁,设置进度条的大小,设置Timer1的间隔并打开timer1,模态窗口方式显示form2,在Timer1中form2返回,再销毁form2,关闭Timer1

在Timer1的OnTimer事件方法中写如下代码,设置form2的showModal返回值。

procedure TForm1.Timer1Timer(Sender: TObject);

begin

if Assigned(Gauge1) then

begin

Gauge1.Progress := Gauge1.Progress + 1;

if Gauge1.Progress = Gauge1.MaxValue then TForm(Gauge1.Parent).ModalResult := 1;

end;

end;

解释一下:

if Assigned(Gauge1) then

相当于 if Gauge1 <> nil then

Gauge1.Parent就是form2,在上一步的Button1的OnClick方法中设置的。

设置ModalResult,窗体的ShowModal方法返回了

F9运行程序,点击Button1按钮,可以看到进度条,当进度条到终点时,进度条所在窗体自动消失,非常适合程序下载进度显示