黑夜彩虹 发表于 2006-6-17 22:15:09

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

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 thenPanelBar.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.

caterpilla 发表于 2006-6-18 08:50:44

支持。。。。。。。

xingbing 发表于 2006-6-18 15:43:19

支持,支持...

野猫III 发表于 2006-6-18 18:28:13

做个成品出来欣赏欣赏。。。呵呵。

黑夜彩虹 发表于 2006-6-22 15:52:52

原帖由 野猫III 于 2006-6-18 18:28 发表
做个成品出来欣赏欣赏。。。呵呵。

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

sislcb 发表于 2006-6-22 19:47:44

呵呵,黑色也是用delphi的吗?有空多交流啊

黑夜彩虹 发表于 2006-6-22 19:49:33

原帖由 sislcb 于 2006-6-22 19:47 发表
呵呵,黑色也是用delphi的吗?有空多交流啊

是啊,是啊。有空多交流。。。 :handshake

cd37ycs 发表于 2006-6-26 17:58:31

强!学习了。

wofan 发表于 2006-10-10 08:39:06

好贴就要支持!

WAKU 发表于 2006-10-10 09:49:32

支持了,不会用Delphi,只有羡慕的份啦~:P
页: [1] 2
查看完整版本: 一个漂亮的进度条的演示...for Delphi