飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 8901|回复: 18

一个漂亮的进度条的演示...for Delphi

[复制链接]

该用户从未签到

发表于 2006-6-17 22:15:09 | 显示全部楼层 |阅读模式
Delphi自带的进度条控件很一般,看到别人的进度条都很漂亮,好仙幕的说...

几次冲动之下很想为自的程序的进度条也美化一下,怎么做呢?

一般有2种方法:

1、用第三方控件    //又不想用到第三方

2、自已画出来  //难度太大,非我等菜鸟能做到

下面介绍第3种方法:

几经思量之下,终于想出了个方法,哈~~~(看下面代码吧)

unit Unit1;

inte***ce

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialog*, **tCtrls, StdCtrls, ComCtrls;
  
type
  TFrm_PanelBar = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    Button2: TButton;
    BarFrame: TPanel;
    PanelBar: TImage;
    PanelLab: TLabel;
    CheckBox1: TCheckBox;
    ColorBox1: TColorBox;
    Label1: TLabel;
    Bevel1: TBevel;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure ColorBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Frm_PanelBar: TFrm_PanelBar;

implementation

{$R *.dfm}

procedure TFrm_PanelBar.Timer1Timer(Sender: TObject);
var n,m:integer; //变量
begin
   //-----------------------------显示进度条状态--------------------------------
   PanelBar.Width:=PanelBar.Width+1;
   n:=PanelBar.Width;
   m:=BarFrame.Width-2;
   Panellab.Caption:=FormatFloat('0',n/m*100)+'%';
   
   //-----------------------------循环滚动进度条--------------------------------
   if PanelBar.Width=BarFrame.Width-2 then  PanelBar.Width:=0;
end;

procedure TFrm_PanelBar.Button1Click(Sender: TObject);
begin
   Timer1.Enabled:=true;
end;

procedure TFrm_PanelBar.Button2Click(Sender: TObject);
begin
   Timer1.Enabled:=False;
end;

procedure TFrm_PanelBar.FormCreate(Sender: TObject);
begin
  //-----------------------------初始化数据-------------------------------------
  PanelBar.Left:=1;
  PanelBar.Top:=1;
  PanelBar.Width:=0;
  PanelBar.Height:=BarFrame.Height-2;
  PanelLab.Top:=(BarFrame.Height-PanelLab.Height) div 2;
  PanelLab.Left:=(BarFrame.width-PanelLab.width) div 2;

  //-------------------------------开双缓区-------------------------------------
  self.DoubleBuffered:=true;
end;

procedure TFrm_PanelBar.CheckBox1Click(Sender: TObject);
begin
   //------------------------------是否显示进度标签-----------------------------
   PanelLab.Visible:=not PanelLab.Visible;
end;

procedure TFrm_PanelBar.ColorBox1Change(Sender: TObject);
begin
   //------------------------------设置背景颜色---------------------------------
    BarFrame.Color:=ColorBox1.Selected;
end;

end.
PYG19周年生日快乐!

该用户从未签到

发表于 2006-6-18 08:50:44 | 显示全部楼层
支持。。。。。。。
PYG19周年生日快乐!
  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 1479 天

    [LV.10]以坛为家III

    发表于 2006-6-18 15:43:19 | 显示全部楼层
    支持,支持...
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2006-6-18 18:28:13 | 显示全部楼层
    做个成品出来欣赏欣赏。。。呵呵。
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2006-6-22 15:52:52 | 显示全部楼层
    原帖由 野猫III 于 2006-6-18 18:28 发表
    做个成品出来欣赏欣赏。。。呵呵。


     重新编译了一下,给猫欣赏欣赏..........

    Project1.rar

    153.03 KB, 下载次数: 55, 下载积分: 飘云币 -2 枚

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-6-22 19:47:44 | 显示全部楼层
    呵呵,黑色也是用delphi的吗?有空多交流啊
    PYG19周年生日快乐!

    该用户从未签到

     楼主| 发表于 2006-6-22 19:49:33 | 显示全部楼层
    原帖由 sislcb 于 2006-6-22 19:47 发表
    呵呵,黑色也是用delphi的吗?有空多交流啊


    是啊,是啊。有空多交流。。。 :handshake
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-4-17 14:53
  • 签到天数: 320 天

    [LV.8]以坛为家I

    发表于 2006-6-26 17:58:31 | 显示全部楼层
    强!学习了。
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-4-15 20:47
  • 签到天数: 431 天

    [LV.9]以坛为家II

    发表于 2006-10-10 08:39:06 | 显示全部楼层
    好贴就要支持!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-10-10 09:49:32 | 显示全部楼层
    支持了,不会用Delphi,只有羡慕的份啦~:P
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表