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

    看CxGrid资料的时候,看见了一个为兄弟的文章,我就转一下了.


    //需要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 ;
    相关定义
    Type
    TListData = Record
    FileName: String ;
    Percent: Integer ;
    End ;
    PListData = ^TListData ;
      本文来自CSDN博客,转载请标明出处:http: //blog.csdn.net/kwbin/archive/2008/11/26/3381317.aspx
    效果图:
    2008-11-26_173648
  • 相关阅读:
    python2.7升python3.2
    SQL-基础学习使用的数据库资料
    SQL-基础学习2--ORDER BY ,DESC,WHERE, BETWEEN,AND ,OR ,IN ,NOT
    SQL-基础学习1--SELECT,LIMIT,DISTINCT,注释
    Python之Django-part 1
    python--文本处理1
    EXTJS4.2——8.Form+gride+linq进行前后端传输
    LINQ的实例
    高级委托使用
    C# 委托
  • 原文地址:https://www.cnblogs.com/huangjacky/p/1619791.html
Copyright © 2011-2022 走看看