Delphi中如何实现如图所示的进度条效果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi中如何实现如图所示的进度条效果相关的知识,希望对你有一定的参考价值。

说的详细点。先谢谢各位了。不要让我的分白给啊
我是希望用label和进度条两个组件来实现的,不想装那么多组件

 1.在Delphi 5中通过菜单“File/New Application”创建一个新的工程。
  2.在窗体中添加一个状态栏组件StatusBar1,一个Button组件Button1.在状态栏编辑器中为状态栏添加两个显示面板,因为后面将要在第二个面板中显示进度条,所以将第二个面板的Style属性设置为psOwnerDraw.将Button1组件的Caption属性设置为“演示操作”。
  3.在Unit1.pas文件的TForm1的类型定义中添加下面的变量定义:
  ……
  private
   Private declarations
  progressBar:TProgressBar;// 进度条组件
  progressBarRect:TRect; // 进度条组件的尺寸
  public
   Public declarations
  ……
  4.在状态栏的OnDrawPanel事件的处理过程中,获取将Style属性设置为psOwnerDraw的面板的尺寸。添加StatusBar1组件的OnDrawPanel事件的处理过程如下:
  procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
  Panel: TStatusPanel; const Rect: TRect);
  begin
  // 进度条组件的尺寸设定为状态条中的第二个显示面板的尺寸,因为该面板的Style属性已被设置为psOwnerDraw
  progressBarRect:=Rect;
  end;
  5.在按下按钮Button1组件时将执行一个模拟计算过程的循环操作,同时动态地在StatusBar1的第二个面板中创建并显示ProgressBar组件,并将其父级设置为StatusBar1组件。添加Button1组件的OnClick事件的处理过程如下:
  procedure TForm1.Button1Click(Sender: TObject);
  var
  // I为循环变量, StepCount为执行循环的总数目
  I,StepCount : Integer;
  begin
  //动态创建进度条组件progressBar
  progressBar:=TProgressBar.Create(Form1);
  StepCount:=10000; // 循环的总数目
  with progressBar do
  begin
  // 先确定进度条组件的尺寸和位置
  Top:=ProgressBarRect.Top;
  Left:=ProgressBarRect.Left;
  Width:=ProgressBarRect.Right-ProgressBarRect.Left;
  Height:=ProgressBarRect.Bottom-ProgressBarRect.Top;
  Visible:=True; // 使进度条可见
  try
  Parent:=StatusBar1; // parent属性设置为状态栏组件
  Min:=0;// 设定进度条的范围和步长
  Max:=StepCount;
  Step:=1;
  for I:=1 to StepCount do
  begin
  Stepit;// 循环使进度显示条累加
  end;
  MessageDlg(′演示操作已经完成!′, mtInformation, [mbOK], 0);
  finally
  Free;// 最后释放进度条组件占用的资源
  end;
  end;
  end;
  通过这种方法我们就可以在状态条中动态地添加进度条,同样的原理还用于在状态栏中添加其他的组件,过程基本一致。
参考技术A

实现这个效果的进度条是 raize控件里的 

属于display标签页下 RzProgressBar;

只要控制 该控件的 Percent 就ok

如图。

-------------------------

你需要做的~下载一个razie控件~

安装上~找到这个RzProgressBar,脱两个在界面上~

具体控制都是通过代码控制。

颜色什么的都在属性里有。

------------------------

over,希望对你有帮助

参考技术B 放2个label到界面上,label2显示标题,label1显示颜色。

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
const
WIDTH1=100;//这时进度条的宽。随便设。
begin
self.Label2.Caption:='0%'; //标题初始化,显示0%
self.Label2.AutoSize:=false;
self.Label2.Alignment:=taCenter;
self.Label2.Width:=WIDTH1;

self.Label1.Left:=self.Label2.Left; //把两个label对齐
self.Label1.Top:=self.Label2.Top;
self.Label1.Color:=clLime; //进度条颜色
self.Label1.AutoSize:=false;
self.Label1.Caption:=''; //label1不显示标题
self.Label1.Transparent:=false; //透明要关闭
for I := 0 to 100 do //进度分100份显示
begin
self.Label1.Width:=i*WIDTH1 div 100;//更改label的宽,模拟进度条。没有使用TProgressBar组件。
self.Label2.Caption:=inttostr(i)+'%';
sleep(50); //延时,根据需要取舍
application.ProcessMessages; //及时处理消息
end;
end;本回答被提问者采纳
参考技术C

不需要那么麻烦,原生控件即可。
Samples下面,TGauge控件,完美实现。

属性设置:
BorderStyle: bsNone
ForeColor: clLime
Height: 16
进度:Progress

VB如何实现进度条

如图显示,运行窗口form3的时候,进度条开始运行进度,当运行到百分之20的时候在标签1显示文字“123”然后运行到百分之50的时候,在标签1显示“456”进度到百分之百的时候,显示为“789”

VB实现进度条的方法只需要5个步骤就可以。

1.首先,编写一个程序框架,如下所示。

2.然后您可以在这里输入各种语句,如下所示。

3.然后找到两个语句块的中间部分,如下图所示。

4.输入语句[Exitsub],如下所示。

5.最后,您可以运行测试并解决实现进度条的问题,如下所示。

注意事项:

VB背后的思想是让程序员(新手和专家)都能轻松使用它。VB使用的GUI系统可以很容易地构建应用程序,但是可以开发相当复杂的程序。

VB的程序是基于表单的可视化组件安排的联合,并添加代码来指定组件的属性和方法。因为组件中已经定义了一些默认属性和方法,所以程序员不需要编写太多代码就可以完成一个简单的程序。

VB程序可以包含一个或多个表单,或者一个主表单和多个子表单,类似于操作系统。功能很少的对话框窗口(例如没有最大化和最小化按钮的表单)可以用来提供弹出功能。

VB使用参数计算方法进行垃圾回收,它包含大量的对象,提供了基本的面向对象支持。随着越来越多的组件可用,程序员可以选择需要哪些扩展库。

VB使大量的外部控件有了自己的生存空间。VB中有许多第三方控件。VB还提供了创建、使用和重用这些控件的方法,但是由于语言问题,从一个应用程序创建另一个控件并不容易。

参考技术A

1、首先,写上一个程序框架。

2、然后就可以在这里输入各种语句。

3、然后找到两个语句块的中间部分。

4、输入语句 【Exit sub】。

5、最后就可以去运行测试了。


注意事项:

VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建Active X控件,用于高效生成类型安全和面向对象的应用程序 [2]  。

参考技术B 先添加一个控件,然后复制以下代码,简单的进度条完成:
--------------------------------------------------------------
Dim Progress As Integer
ProgressBar1.Minimum = Min
ProgressBar1.Maximum = Max

For i As Integer = Min To Max
'执行计算.......
Progress = i \ Max '计算进度
ProgressBar1.Value = Progress '显示进度
My.Application.DoEvents() '使用Doevents防止窗体假死使进度条看不到,但是会严重降低运行速度
Next
参考技术C 添加进度条控件方法:
工程-部件-Microsoft WIndows Common Controls 5.0
添加后,选择左侧的ProgressBar控件,添加到窗体,添加Timer控件,Interval为1000,添加Label1。
代码部分:

Private Sub Timer1_Timer()
If ProgressBar1.Value < 100 Then
ProgressBar1.Value = ProgressBar1.Value + 10
End If
If ProgressBar1.Value = 20 Then
Label1.Caption = "123"
Else
If ProgressBar1.Value = 50 Then
Label1.Caption = "456"
Else
If ProgressBar1.Value = 100 Then
Label1.Caption = "789"
End If
End If
End If

End Sub追问

恩恩 可以啦 ,,问个题外话 那个时钟怎么调呢? 1000代表多长时间??

追答

1000代表1秒

本回答被提问者采纳

以上是关于Delphi中如何实现如图所示的进度条效果的主要内容,如果未能解决你的问题,请参考以下文章

VB如何实现进度条

如何在按钮小部件中显示进度指示器(如图所示)

有没有办法使用swift将进度条分成几段? (如图所示)

Python实现下载界面(带进度条,断点续传,多线程多任务下载等)

Android 自定义漂亮的圆形进度条

如何在vue 的table中开发如图所示的一个弹出框?