文档章节

如何使用 TStringGrid 呈现大量的颜色信息 - 回复 "冷公子" 的问题

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 305
阅读 5
收藏 0

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

本文转载自:http://www.cnblogs.com/del/archive/2011/05/16/2047719.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
Expander-基于Graph的机器学习软件

近来机器学习突飞猛进使计算机系统能够解决现实世界中的复杂问题。其中之一便是谷歌的大规模、基于图的机器学习平台。这一技术使用了半监督式学习方法,目前已经在谷歌大量的产品中得到应用,...

openthings
2016/10/08
66
0
OpenGL三维显示中纹理闪烁和颜色跳变的问题

问题如下;: 1、现在有两块区域纹理贴图,这两块区域有部分是重叠在一起的,这个重叠在一起的纹理会闪烁,各位高手有没有解决的办法? 2、程序中采用glColor3f函数设置了直线和平面的颜色。但...

小青_1989
2014/06/18
0
0
如何使用颜色来提高技术文档的可读性?

Foreword 关于 Visual Effectiveness,之前给小伙伴们分享过如何让你的内容输出更加专业更有设计感?。 看似很简单的四个原则(对比、重复、对齐、亲密性),可以通过对文字的视觉编排让你的...

Lilian_Lee
07/11
0
0
Visual Studio 11开发指南(11)Visual Studio 11调试游戏

3D游戏的在新设备(智能手机,平板电脑)上呈现一个巨大的机会,为开发人员。用于访问底层的图形硬件,在 Windows 上全部的力量的主 API 是DirectX 11 (包括Direct3D和Direct2D). Visual S...

junwong
2012/03/09
0
0
使用 LWUIT 的风格、主题和 Painter 特性

Lightweight User Interface Toolkit (LWUIT) 为 Java ME UI 开发人员带来了许多令人印象深刻的功能。Style(风格)、Theme(主题)和 Painter 正是这样三种功能,它们可以方便开发非常吸引人...

长平狐
2012/08/29
122
0

没有更多内容

加载失败,请刷新页面

加载更多

Cointext在阿根廷和土耳其推出比特币现金短信钱包

Cointext于10月15日开始在土耳其和阿根廷提供新的基于SMS的比特币现金钱包服务,这两个国家的加密货币使用量急剧上升,以应对严峻的经济形势。 移动钱包 通过短信处理BCH交易 “比特币是更好...

lpy411
6分钟前
0
0
大数据早课-0918

9.18日早课 1.全局搜索含有abc的文件名称或文件夹的命令 2.当前目录一般用什么表示 3.切换到上一次和上一层命令分别是什么 4.pwd是查看当前目录的什么 5.隐藏文件或文件夹的标识是什么? 怎样...

hnairdb
6分钟前
0
0
mybatis学习笔记一

一、mybaits需要的项目依赖 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artif......

wuyiyi
7分钟前
0
0
CentOS6 安装 GraphicsMagick

1.安装相关依赖: yum install -y gcc libpng libjpeg libpng-devel libjpeg-devel ghostscript libtiff libtiff-devel freetype freetype-devel 2.下载并解压到目录/usr/local/ wget ft......

凯文加内特
9分钟前
0
0
RabbitMq集群使用Nginx做负载均衡

1.配置rabbitmq集群(可以参考前一篇RabbitMq之部署集群) 2.Nginx做负载均衡 注意:Nginx1.90版本后 新增了stream 模块用于一般的 TCP 代理和负载均衡,之前版本不支持 修改Nginx配置文件ngi...

zhaochaochao
14分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部