文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:34
字数 305
阅读 5
收藏 0
点赞 0
评论 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
Visual Studio 11开发指南(11)Visual Studio 11调试游戏

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

junwong
2012/03/09
0
0
如何使用颜色来提高技术文档的可读性?

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

Lilian_Lee
07/11
0
0
OpenGL三维显示中纹理闪烁和颜色跳变的问题

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

小青_1989
2014/06/18
0
0
心智乐高04 - 很傻很天真的贝叶斯定理

image 感谢大家对标题党 00 的宽容,这篇文章的完整标题应该是:很傻很天真 - 但是拥有迷妹万千 - 不黄很暴力 - 十分钟提高智商的贝叶斯定理。 上一篇心智乐高探讨了基本比率谬误(base rate...

Kidult
2017/12/06
0
0
网站要怎样为越来越流行的语音交互而优化

网站要怎样为越来越流行的语音交互而优化 优设-UISDC2017-12-281 阅读 网页设计教程 仔细审视最近几年的趋势变化,你会发现Alexa、Siri 这样的语音助理服务已经润物细无声地影响着我们日常的...

优设-UISDC
2017/12/28
0
0
微软Everyday AI发布会:四大工具把AI带到你身边

     昨天,微软在旧金山举办了一场“Everyday AI”发布会,会上主要发布了必应搜索引擎、微软小娜、Office 365和Seeing AI四种工具和服务的更新功能,更新后的工具借助人工智能服务帮助...

微软亚洲研究院
2017/12/14
0
0
使用 LWUIT 的风格、主题和 Painter 特性

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

长平狐
2012/08/29
122
0
遇见大数据可视化 : 【云图】让数据可见

导语: 除了手搓,我们还有更好的数据可视化方案 今天,即使你不熟悉云计算,大数据是什么。但是这些词汇已经充斥在我们的身边。我们被超负荷的信息和过多的数据折磨。谁没被定义成数字?——...

腾讯大数据可视化设计团队
2017/11/01
0
0
解析应用程序UI设计的15项黄金法则

本文原载于游戏邦,作者Jake Simpson 好友曾向我展示了最新的iPhone和iPad版《极品飞车》。游戏的渲染效果令人印象深 刻,是款蓄势待发的优秀游戏。但是,游戏的前端是典型的UI设计偏差案例。...

红薯
2012/04/04
2.6K
4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Weblogic问题解决记录

问题:点击登录,页面刷新但是不进去管理界面。解决:删除cookies再登录。

wffger
25分钟前
0
0
RxJava2的错误处理方案

最近使用retrofit2 + rxKotlin2写接口访问,想尽量平铺代码,于是就想到当借口返回的状态码为「不成功」时(比如:code != 200),就连同网络错误一起,统一在onError方法中处理。想法总是好的...

猴亮屏
33分钟前
0
0
程序的调试信息

调试二进制程序时,经常要借助GDB工具,跟踪程序的执行流程,获取程序执行时变量的值,以发现问题所在。GDB能得到这些信息,是因为编译程序时,编译器保存了相应的信息。Linux下的可执行程序...

qlee
56分钟前
0
0
应用级缓存

缓存命中率 从缓存中读取数据的次数与总读取次数的比例,命中率越高越好 java缓存类型 堆缓存 guavaCache Ehcache3.x 没有序列化和反序列化 堆外缓存ehcache3.x 磁盘缓存 存储在磁盘上 分布式...

writeademo
今天
0
0
python爬虫日志(3)find(),find_all()函数

1.一般来说,为了找到BeautifulSoup对象内任何第一个标签入口,使用find()方法。 以上代码是一个生态金字塔的简单展示,为了找到第一生产者,第一消费者或第二消费者,可以使用Beautiful Sou...

茫羽行
今天
0
0
java:thread:顺序执行多条线程

实现方案: 1.调用线程的join方法:阻塞主线程 2.线程池 package com.java.thread.test;public class MyThread01 implements Runnable {@Overridepublic void run() {Syste...

人觉非常君
今天
0
0
ElasticSearch 重写IK分词器源码设置mysql热词更新词库

常用热词词库的配置方式 1.采用IK 内置词库 优点:部署方便,不用额外指定其他词库位置 缺点:分词单一化,不能指定想分词的词条 2.IK 外置静态词库 优点:部署相对方便,可以通过编辑指定文...

键走偏锋
今天
19
0
Git 2.18版本发布:支持Git协议v2,提升性能

Git 2.18版本发布:支持Git协议v2,提升性能Git 2.18版本发布:支持Git协议v2,提升性能 新版本协议的主要驱动力是使 Git 服务端能够对各种 ref(分支与 tag)进行过滤操作。 这就意味着,G...

linux-tao
今天
0
0
python浏览器自动化测试库【2018/7/22-更新】

64位py2.7版本 更新 document_GetResources 枚举页面资源 document_GetresourceText 获取指定url的内容 包括页面图片 下载地址下载地址 密码:upr47x...

开飞色
今天
44
0
关于DCL双重锁失效及解决方案

关于DCL双重锁失效及解决方案 Double Check Lock (DCL)实现单例 DCL 方式实现单例的优点是既能够在需要时才初始化单例,又能够保证线程安全,且单例对象初始化后调用getInstance方法不进行...

DannyCoder
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部