如何使用 TStringGrid 呈现大量的颜色信息

来源:互联网 时间:1970-01-01


"冷公子" 同学需要在 TStringGrid 中通过颜色显示大量信息, 给出的方案是: 建立一个对应的颜色数组.

参考代码:



unit Unit1;interfaceuses 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.


相关阅读:
Top