• 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

  • 相关阅读:
    swift关键字
    Swift开发注意点
    Mac上安装lua
    Runtime运行时机制
    ios开发中如何选择图片的加载方式
    ios开发中的静态内存分析
    loadrunner-2-9添加事务
    loadrunner-2-8HTML和URL模式
    loadrunner-2-7设置关联
    loadrunner中Windows Resource没有数据或不可用
  • 原文地址:https://www.cnblogs.com/wlmbz/p/3296970.html
Copyright © 2020-2023  润新知