Delphi - 在ListView中添加一个进度条Delphi 2009-12-15 15:22:35 阅读206 评论0 字号:大中小 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.Da Exit ; l_intPercent := PListData( Item.Da //获取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 效果图: ![]() |
|
来自: 远在南非 > 《listview》