本文主要是介绍如何使用 TStringGrid 呈现大量的颜色信息 - 回复 "冷公子" 的问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
如何使用 TStringGrid 呈现大量的颜色信息 - 回复 "冷公子" 的问题
"冷公子" 同学需要在 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.
posted on
2011-05-16 15:16
万一
阅读(3988)
评论(6)
编辑
收藏
这篇关于如何使用 TStringGrid 呈现大量的颜色信息 - 回复 "冷公子" 的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!