"冷公子" 同学需要在 TStringGrid 中通过颜色显示大量信息, 给出的方案是: 建立一个对应的颜色数组.
参考代码:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls; type TForm1 = class(TForm) StringGrid1: TStringGrid; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); end; var Form1: TForm1; implementation {$R *.dfm} const ColNum = 6; //列数 RowNum = 5; //行数 ColorDefault = clWhite; //默认颜色 var colorArray: array of array of TColor; //颜色数组 procedure TForm1.FormCreate(Sender: TObject); var i,j: Integer; begin {初始化颜色数组} SetLength(colorArray, ColNum, RowNum); for i := 0 to ColNum - 1 do for j := 0 to RowNum - 1 do colorArray[i,j] := ColorDefault; {初始化 StringGrid} StringGrid1.ColCount := ColNum + 1; StringGrid1.RowCount := RowNum + 1; for i := 1 to StringGrid1.ColCount - 1 do StringGrid1.Cells[i, 0] := Format('Col%d', [i]); for i := 1 to StringGrid1.RowCount - 1 do StringGrid1.Cells[0, i] := Format('Row%d', [i]); end; {StringGrid1 的 OnDrawCell 事件: 绘制颜色} procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if Length(colorArray) < 1 then Exit; if (ACol = 0) or (ARow = 0) then Exit; if colorArray[ACol-1, ARow-1] = ColorDefault then Exit; with TStringGrid(Sender).Canvas do begin Brush.Color := colorArray[ACol-1, ARow-1]; FillRect(Rect); end; end; {颜色呈现测试} procedure TForm1.Button1Click(Sender: TObject); begin colorArray[1,2] := clRed; colorArray[1,3] := clBlue; StringGrid1.Refresh; end; end.
分类:
问与答
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2008-05-16 捕捉全屏图像