标签:
PS:我平时是用来显示数据的,没有考虑编辑状态;为了说明效果,cxGrid使用DBTableView并设成允许多选和选区方式(在OptionsView里有设)。
OnDrawColumnHeader事件源码如下:
procedure TfrmAccount.cxtvMasterCustomDrawColumnHeader( Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean); var AButtonState: TcxButtonState; ARect: TRect; begin if AViewInfo.Column.Selected then begin AButtonState := cxbsHot; ARect := AViewInfo.Bounds; Sender.LookAndFeelPainter.DrawHeader(ACanvas, ARect, AViewInfo.TextAreaBounds , [], cxBordersAll, AButtonState, AViewInfo.Column.HeaderAlignmentHorz , AViewInfo.Column.HeaderAlignmentVert, False, False , AViewInfo.Column.Caption, ACanvas.Font, Sender.Styles.Selection.TextColor , Sender.Styles.Selection.Color); {======================================================================== DESIGN BY : 彭国辉 DATE: 2007-03-02 SITE: http://kacarton.yeah.net/ BLOG: http://blog.csdn.net/nhconch EMAIL: kacarton#sohu.com 文章为作者原创,转载前请先与本人联系,转载请注明文章出处、保留作者信息,谢谢支持! =========================================================================} ARect.Left := ARect.Right - 19; ARect.Right := ARect.Right - 1; InflateRect(ARect, -1, -3); if AViewInfo.Column.Options.Filtering then begin Sender.LookAndFeelPainter.DrawFilterDropDownButton(ACanvas, ARect , cxbsNormal, AViewInfo.Column.Filtered); OffsetRect(ARect, -16, 0); end; if AViewInfo.Column.SortIndex <> -1 then Sender.LookAndFeelPainter.DrawSortingMark(ACanvas, ARect , AViewInfo.Column.SortOrder=soAscending); ADone := true; end; end; OnDrawIndicatorCell事件源码如下: procedure TfrmAccount.cxtvMasterCustomDrawIndicatorCell( Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean); var AButtonState: TcxButtonState; clFont, clBrush: TColor; begin if not (AViewInfo is TcxGridIndicatorRowItemViewInfo) then Exit; if TcxGridIndicatorRowItemViewInfo(AViewInfo).GridRecord.Selected then begin AButtonState := cxbsHot; if Sender.LookAndFeelPainter.LookAndFeelStyle = lfsOffice11 then begin clFont := ACanvas.Font.Color; clBrush := ACanvas.Brush.Color; end else begin clFont := Sender.Styles.Selection.TextColor; clBrush := Sender.Styles.Selection.Color; end; end else begin AButtonState := cxbsNormal; clFont := ACanvas.Font.Color; clBrush := ACanvas.Brush.Color; end; Sender.LookAndFeelPainter.DrawHeader(ACanvas, AViewInfo.ContentBounds, AViewInfo.ContentBounds, [], [bLeft, bRight, bBottom], AButtonState, taCenter , vaCenter, False, False, IntToStr(TcxGridIndicatorRowItemViewInfo(AViewInfo).GridRecord.Index + 1) , ACanvas.Font, clFont, clBrush); ADone := True; end;
标签:
原文地址:http://www.cnblogs.com/westsoft/p/5969119.html