摘要载入中…    请稍等…












内容载入中…    请稍等…

如长时间看不到内容,请关闭浏览器,重新打开此页!

芯友首页 应用软件 编程开发 网络硬件 资源下载 动漫音乐 精美图库 芯友论坛 视频教程 电脑技术QQ群:72845454
 ★★photoshop学友-史上最强播放器★★
 位置:编程开发>Deiphi>Deiphi网络编程
◎→ 本类最新
远程程序运行状态的简单监控
在IE上增添一个按钮
在Delphi中实现ASP编程
在Delphi程序中应用IE浏览器控件
在DELPHI程序中拨号上网
用Delphi编写ASP的ActiveX服务器
用Delphi编写CGI程序返回图象
◎→相关资源
C语言入门视频教程
C#编程WinForm入门视频
Asp.net入门视频教程下载
VC++编程视频教程下载
VB窗体文章
HTML入门教程
Deiphi实例教程
Deiphi窗体文章
Deiphi数据库编程
Deiphi网络编程
Deiphi图形图象文章
Deiphi系统文件
◎→ 热门资源
Delphi拖放编程(2)(1)
Delphi“流”实现文件加密器(3)
Delphi“流”实现文件加密器(2)
Delphi“流”实现文件加密器(1)
Delphi6函数大全(8)(2)
Delphi6函数大全(8)(1)
Delphi6函数大全(12)

Delphi实现下载进程的动态显示


日期:2008-10-20 22:07:23    来源:
   
 ·可以下载整个目录的简单实现 ·浅谈Delphi中进程间的数据共享
 ·Delphi动态生成定义数据库 ·三维全息显示技术开发成功

Delphi实现下载进程的动态显示
  许多知名的下载软件中都有下载管理器,用一个TListView来显示下载的进程,你可以清楚的看到已经下载了多少,还有多少内容仍需下载,这样的控件,Delphi自身并未提供,但我们可以在TListView的基础之上加入进度条控件(TProgressBar)来实现这一功能,这样就能既能满足我们的实际需求,又不用“牺牲”口袋里白花花的银子,还能增加我们对控件嵌套的认识,一箭三雕,何乐而不为呢?

  到底该怎么做呢?让我想想……好了让我们先从TListView的ViewStyle属性开始吧,这个属性我们常用,把TListView做为一个表格来显示各种数据时,我们常常把这个属性设置成vsReport,设置之后,最左边的列(Column)包含一个小的图标和数据,从第二列开始就是显示一个个字段的数据,这是我们最常见的TListView的样子,每天一打开Windows的资源管理器,我们就能看到它。(如图一)

Delphi实现下载进程的动态显示(图一)

图文


  打开Delphi,新建一个工程,在自动生成的Form上,放置一个TListView控件,在它的Columns属性中定义两列,第一列放置数据项(Item),第二列用来存放Progress.(如图二)

Delphi实现下载进程的动态显示(图二)
  在Form上加入一个按钮(Button),在按钮的Click事件中加入如下代码,用于在按下按钮时,可以在TListView的第二列显示TProgress。

  添加Item的代码如下:

procedure TForm1.AddItemButtonClick(Sender: TObject);
const
 pbColumnIndex = 1;
 pbMax = 100;
var
 li : TListItem;
 lv : TListView;
 pb : TProgressBar;
 pbRect : TRect;
begin
 lv := ListViewEx1;
 //建立一个新的ListItem
 li := lv.Items.Add;
 li.Caption := ’Item ’ + IntToStr(lv.Items.Count);

 //建立一个ProgressBar,置入TListView的第二列中
 pb := TProgressBar.Create(nil);
 pb.Parent := lv;
 li.Data := pb;
 pbRect := li.DisplayRect(drBounds);
 pbRect.Left := pbRect.Left +
 lv.Columns[-1 + pbColumnIndex].Width;
 pbRect.Right := pbRect.Left +
 lv.Columns[pbColumnIndex].Width;
 pb.BoundsRect := pbRect;
end; //添加ItemButton事件
  上面的代码可以实现这样的功能:按下按钮之后,一个Progressbar被建立,一个对Progressbar的引用被加进ListItem的Data属性,最后,Progressbar被放置在由pbColumnIndex属性指定的列中。

  当想要将一个项(Item)从TListView中删除,你必须先判断添加进去的Progressbar的内存占用是否已经被释放,如果已经完成,就继续。

  删除Item的代码如下:

procedure TForm1.RemoveItemButtonClick(Sender: TObject);
var
 lv : TListView;
 li : TListItem;
 i, idx : integer;
 pb : TProgressBar;
begin
 lv := ListViewEx1;

 li := lv.Selected;

 if li <> nil then
 begin
  idx := li.Index;
  TProgressBar(li.Data).Free;//先释放TProgressBar
  lv.Items.Delete(idx);

  //把行向上移动
  for i := idx to -1 + lv.Items.Count do
  begin
   li := lv.Items.Item[i];
   pb := TProgressBar(li.Data);
   pb.Top := pb.Top - (pb.BoundsRect.Bottom - pb.BoundsRect.Top);
  end;
 end;
end; //删除ItemButton事件
  完成之后,我们来测试一下,我们拖一个TTimer控件,然后在它的OnTime事件中填入下面的代码,模拟一下在一个真实的环境下,这个被我们美化过的TListView控件会有如何精彩表现,也让大伙一起体会一把写程序的小小成就感吧。(如图三)

Delphi实现下载进程的动态显示(图三)
  代码如下:

procedure TForm1.Timer1Timer(Sender: TObject);
var
 idx : integer;
 pb: TProgressbar;
 lv : TListView;
begin
 lv := ListViewEx1;

 if lv.Items.Count = 0 then Exit;

 //随机生成一个数据项
 //根据生成的数据来控制TProgressBar的长度
 idx := Random(lv.Items.Count);
 pb := TProgressBar(lv.Items[idx].Data);
 if pb.Position < pb.Max then
  pb.StepIt
 else
  pb.Position := 0;
end;//Timer事件
  就是这样的简单,任何有名的软件都是由这样的一个个小知识点构成,只要细心体会知名软件的优势与长处,模仿然后改进说不定你能做出比它们都棒的软件!

  开发环境: WindowsXP SP2+Delphi7

 [1]

用Delphi实现文件下载的方法

获取其他进程中ListBox和ComboBox的内容

用Delphi制作动态有声标签

Photoshop绘制精美显示器-9

--->腾讯QQ2007 Beta 飘云版 V3.93┊附带飘云外挂 V0.7 Beta下载┊纯净绿色特别版
--->腾讯 QQ/TM 珊瑚虫增强包 V5.0 B3┊支持QQ2006Final的97%显示IP┊绿色特别版
--->迅雷国际版 Gigaget V5.5.1.241┊附带左右键选择下载功能┊绿色下载站免安装特别版
--->Internet Download Manager V5.09 Build3┊提升下载速度┊完美汉化绿色特别版
--->A1 Website Downloa V1.07┊一款网站下载工具┊绿色特别版
Tags:  下载 进程 动态 显示
{$enumber$}
芯友网版权所有 1999-2006 | 著作权与商标声明 | 法律声明 | 服务条款 | 隐私声明 | 联系我们