"冷公子" 同学需要在 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)