• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi-在ListView中添加一个进度条

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

// 相关定义
Type
  TListData = Record
    FileName: String;
    Percent: Integer;
  End;

  PListData = ^TListData;

  // 需要Use CommCtrl
Function GetSubItemRect(handle, ItemsIndex, SubIndex: Integer): TRect;
Begin
  ListView_GetSubItemRect(handle, ItemsIndex, SubIndex, 0, @Result);
End;

Procedure TFormMain.lvw_listCustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer;
  State: TCustomDrawState; Var DefaultDraw: Boolean);
Var
  l_Rect: TRect;
  l_intPercent: Integer;
Begin
  If SubItem = 3 Then
  Begin
    If Item.Data = Nil Then
      Exit;
    l_intPercent := PListData(Item.Data).Percent;
    // 获取ListView子项的Rect
    l_Rect := GetSubItemRect(Item.handle, Item.Index, SubItem);
    // 画一条外边框
    InflateRect(l_Rect, -1, -1);
    Sender.Canvas.Brush.Color := clBlack;
    Sender.Canvas.FrameRect(l_Rect);
    // 先填充底色
    InflateRect(l_Rect, -1, -1);
    Sender.Canvas.Brush.Color := lvw_list.Color;
    Sender.Canvas.FillRect(l_Rect);
    // 再根据进度画出完成区域
    If l_intPercent = 100 Then
      Sender.Canvas.Brush.Color := clGreen
    Else
      Sender.Canvas.Brush.Color := clPurple;
    l_Rect.Right := l_Rect.Left + Floor((l_Rect.Right - l_Rect.Left) * l_intPercent / 100);
    Sender.Canvas.FillRect(l_Rect);
    // 恢复笔刷
    Sender.Canvas.Brush.Color := lvw_list.Color;
    // 关键的一句,屏蔽系统自绘过程
    DefaultDraw := False;
  End;
End;

// 本文来自CSDN博客,转载请标明出处:http: //blog.csdn.net/kwbin/archive/2008/11/26/3381317.aspx

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi回调函数的使用-例子Delphi回调函数的使用-例子发布时间:2022-07-18
下一篇:
Delphi实现QQ窗体的缩入伸出功能发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap