zoukankan      html  css  js  c++  java
  • Delphi 在ListView中添加一个进度条

    // 相关定义
    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

  • 相关阅读:
    threejs学习笔记01
    vue.nextTick()----(转)
    vue过滤器---123过滤成一二三
    太懒了,八百年没更新了。。。
    ie上 th td边框不显示
    简案快审----pdf.js使用总结
    201707问题记录
    echarts使用总结
    linux常见漏洞利用技术实践
    remote KG
  • 原文地址:https://www.cnblogs.com/wlmbz/p/3296970.html
Copyright © 2011-2022 走看看