cxGrid 显示行号及行号列列名
cxGrid默认不显示行号,但是可以通过cxGrid1DBTableView1CustomDrawIndicatorCell事件来重绘行号
选中cxGrid1DBTableView1,在OnCustomDrawIndicatorCell事件中,输入以下代码:
1
2
3
4
5
6
|
procedure TForm1 . cxGrid1DBTableView1CustomDrawIndicatorCell( Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean ); begin SetRowNumber(Sender, AviewInfo, ACanvas, ADone); //调用SetRowNumber函数,函数声明及实现见后 end ; |
SetRowNumber函数声明(注意函数声明的摆放位置,此处不在Form内):
1
2
|
procedure SetRowNumber( var Sender: TcxGridTableView; var AViewInfo: TcxCustomGridIndicatorItemViewInfo; ACanvas: TcxCanvas; var ADone: boolean ); |
SetRowNumber函数实现代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
procedure SetRowNumber( var Sender: TcxGridTableView; var AViewInfo: TcxCustomGridIndicatorItemViewInfo; ACanvas: TcxCanvas; var ADone: boolean ); var AIndicatorViewInfo: TcxGridIndicatorRowItemViewInfo; ATextRect: TRect; AFont: TFont; AFontTextColor, AColor: TColor; procedure DrawIndicatorImage(ACanvas: TcxCanvas; const R: TRect; AKind: TcxIndicatorKind); var X, Y: Integer ; begin if AKind = ikNone then Exit; X := (R . Left + R . Right - cxLookAndFeelPainters . cxIndicatorImages . Width); Y := (R . Top + R . Bottom - cxLookAndFeelPainters . cxIndicatorImages . Height) div 2 ; cxLookAndFeelPainters . cxIndicatorImages . Draw(ACanvas . Canvas, X, Y, Ord(AKind) - 1 ); end ; begin try AFont := ACanvas . Font; AColor := clBtnFace; AFontTextColor := clWindowText; if (AViewInfo is TcxGridIndicatorHeaderItemViewInfo) then begin ATextRect := AViewInfo . Bounds; InflateRect(ATextRect, - 1 , - 1 ); Sender . LookAndFeelPainter . DrawHeader(ACanvas, AViewInfo . Bounds, ATextRect, [], cxBordersAll, cxbsNormal, taCenter, TcxAlignmentVert . vaCenter, False , False , '序号' , AFont, AFontTextColor, AColor); ADone := True ; end ; if not (AViewInfo is TcxGridIndicatorRowItemViewInfo) then Exit; ATextRect := AViewInfo . ContentBounds; AIndicatorViewInfo := AViewInfo as TcxGridIndicatorRowItemViewInfo; InflateRect(ATextRect, - 1 , - 1 ); if Sender . DataController . RecordCount > 0 then begin if AIndicatorViewInfo . GridRecord . Selected then AFontTextColor := clRed else AFontTextColor := clWindowText; end ; Sender . LookAndFeelPainter . DrawHeader(ACanvas, AViewInfo . ContentBounds, ATextRect, [], [bBottom, bLeft, bRight], cxbsNormal, taCenter, TcxAlignmentVert . vaCenter, False , False , IntToStr(AIndicatorViewInfo . GridRecord . Index + 1 ), AFont, AFontTextColor, AColor); ADone := True ; except end ; DrawIndicatorImage(ACanvas, ATextRect, AIndicatorViewInfo . IndicatorKind); end ; |
最后将cxGrid1DBTableView1中的OptionView中的Indicator设为True, IndicatorWidth设为适合值即可。
分类:
DevExpress
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人