为Delphi数据表格增加彩色

Delphi中数据控制构件DBGrid是用来反映数据表的最重要、也是最常用的构件。在应用程序中,如果以彩色的方式来显示DBGrid,将会增加其可视性,尤其在显示一些重要的或者是需要警示的数据时,可以改变这些数据所在的行或列的前景和背景的颜色。

DBGrid属性DefaultDrawing是用来控制Cell(网格)的绘制。若DefaultDrawing的缺省设置为True,意思是Delphi使用DBGrid的缺省绘制方法来制作网格和其中所包含的数据,数据是按与特定列相连接的Tfield构件的DisplayFormat或EditFormat特性来绘制的;若将DBGrid的DefaultDrawing特性设置成False,Delphi就不绘制网格或其内容,必须自行在TDBGrid的OnDrawDataCell事件中提供自己的绘制例程(自画功能)。

在这里将用到DBGrid的一个重要属性:画布Canvas,很多构件都有这一属性。Canvas代表了当前被显示DBGrid的表面,你如果把另行定义的显示内容和风格指定给DBGrid对象的Canvas,DBGrid对象会把Canvas属性值在屏幕上显示出来。具体应用时,涉及到Canvas的Brush属性和FillRect方法及TextOut方法。Brush属性规定了DBGrid.Canvas显示的图像、颜色、风格以及访问Windows GDI 对象句柄,FillRect方法使用当前Brush属性填充矩形区域,方法TextOut输出Canvas的文本内容。

以下用一个例子来详细地说明如何显示彩色的DBGrid。在例子中首先要有一个DBGrid构件,其次有一个用来产生彩色筛选条件的SpinEdit构件,另外还有ColorGrid构件供自由选择数据单元的前景和背景的颜色。

1.建立名为ColorDBGrid的Project,在其窗体Form1中依次放入所需构件,并设置属性为相应值,具体如下所列:

Table1 DatabaseName: DBDEMOS
TableName: EMPLOYEE.DB
Active: True;
   DataSource1 DataSet: Table1
   DBGrid1 DataSource1: DataSource1
DefaultDrawing: False
   SpinEdit1 Increment:200
Value: 20000
   ColorGrid1 GridOrdering: go16*1

2.为DBGrid1构件OnDrawDataCell事件编写响应程序:

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;Field: TField; State: TGridDrawState);
   begin
   if Table1.Fieldbyname(′Salary′).value=SpinEdit1.value then
   DBGrid1.Canvas.Brush.Color:=ColorGrid1.ForeGroundColor
   DBGrid1.Canvas.Brush.Color:=ColorGrid1.BackGroundColor;
   DBGrid1.Canvas.FillRect(Rect);
   DBGrid1.Canvas.TextOut(Rect.left+2,Rect.top+2,Field.AsString);
   end;

这个过程的作用是当SpinEdit1给定的条件得以满足时,如′salary′变量低于或等于SpinEdit1.Value时,DBGrid1记录以ColorGrid1的前景颜色来显示,否则以ColorGrid1的背景颜色来显示。然后调用DBGrid的Canvas的填充过程FillRect和文本输出过程重新绘制DBGrid的画面。

时间: 2024-08-03 20:14:43

为Delphi数据表格增加彩色的相关文章

JQuery页面的表格数据的增加与分页的实现

 使用JQuery实现页面的表格数据的增加与分页,具体示例如下,喜欢的朋友可以参考下 代码如下: var countPage;  var nowPag = 1;  var pageSize;  var countSize;    var starIndex;  var endIndex;    // 用户提交信息  var name;  var sex;  var age;    // 定义行号  var num = 1;    $(document).ready(function() {  /

设置Excel数据表格的阴影间隔效果

在包含大量数据的表格中,我们常常使用阴影间隔来提高显示效果,但是一行一行地设置背景颜色可是件麻烦事.下面告诉大家两个好方法. 方法一:假使您的数据区域为A2到C100,先将A3到C3的背景修改为浅灰色,然后选中A2到C3区域,执行"编辑"菜单中"复制"命令,再选中A4到C100区域,执行"编辑"菜单中"选择性粘贴"命令,选择"格式",按"确定"按钮退出.这样就得到了间隔阴影的数据表了.或

如何优化数据表格设计

  令人不爽的表格.他的问题究竟出自哪里? 在互联网早期时代,表格是基本构成元素之一,后来被设计师用更新更符合潮流的布局取代.虽然现在表格在网络上很少出现,但它仍在我们的日常基础交流中收集组织了大部分信息. 例如,我认为有一份表格可以算是表格的鼻祖:美国的"协调关税表",它足足有3440页,并列出了每种可进口到美国的商品,包括浩大的条目纪录如"男人或男孩的大衣.短大衣.披肩.斗篷.带风帽的夹克(包括滑雪夹克).风衣.和类似商品(包括带衬里的.无袖的夹克)". 短大衣

jQuery EasyUI API 中文文档 - DataGrid数据表格_jquery

扩展自 $.fn.panel.defaults ,用 $.fn.datagrid.defaults 重写了 defaults . 依赖 panel resizable linkbutton pagination 用法 复制代码 代码如下: <table id="tt"></table> 复制代码 代码如下: $('#tt').datagrid({ url:'datagrid_data.json', columns:[[ {field:'code',title:'

用Swing实现数据表格功能(加入精华区吧)

最近有个项目是delphi来做的,之中有很多地方要用到数据表格.这种功能在delphi和vb中能很方便的做出来,java没有提供这项功能,但是可以用Jtable 来实现,不过就是麻烦了点:).下面是我用applet实现的一个简单数据表格程序代码.package com.applet.cat10;import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.*;import com.util.*;

jQuery EasyUI API 中文文档 - DataGrid 数据表格

扩展自 $.fn.panel.defaults ,用 $.fn.datagrid.defaults 重写了 defaults . 依赖 panel resizable linkbutton pagination 用法 1. <table id="tt"></table> 1. $('#tt').datagrid({   2.     url:'datagrid_data.json',   3.     columns:[[   4.         {field

jQuery EasyUI API 中文文档 - 数据表格(DataGrid)

DataGrid 数据表格 扩展自 $.fn.panel.defaults ,用 $.fn.datagrid.defaults 重写了 defaults . 依赖 panel resizable linkbutton pagination 用法 1. <table id="tt"></table> 1. $('#tt').datagrid({   2.     url:'datagrid_data.json',   3.     columns:[[   4.

rowediting-Extjs4---用RowEditing对数据进行增加,修改

问题描述 Extjs4---用RowEditing对数据进行增加,修改 不管是添加还是修改,保存用的事件是grid的edit事件 extjs4只能够接收到文本框的值,下拉框的值接不到是什么原因? 'edit':function(obj){ var data = obj.context.record.data; alert(data.mnm); alert(data.stnm);//下拉 alert(data.stid);//文本 var msg = data.isiu == "insert&qu

&amp;#106avascript实现的数据表格:冻结列、调整列宽和客户端排序

客户端|排序|数据|数据表格 根据网上的一些脚本改的,大家看一下,应该对开发有用,准备在.Net下写个Server-Side端控件把下面的代码另存为.htm文件后看下效果. <HTML><HEAD><TITLE>数据表格</TITLE><META http-equiv=Content-Type content="text/html; charset=gb2312"><STYLE type=text/css>BODY