在Delphi中如何动态更改DBGrid的颜色
- 格式:doc
- 大小:56.18 KB
- 文档页数:3
在很多实时数据更新系统如股票,我们需要在数据变化时,有闪烁效果,比如股票升了,用红色闪以下,跌了用绿色闪一下。
这里提供一个例子,是用Labe作为DataGridItemRenderer,当数据变大时用红色字体闪一下,变小时用绿色闪一下。
效果图如下,简单的用Button修改数据源。
源代码如下:<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="/2006/mxml" layout="absolute"><mx:Script><![CDATA[import mx.controls.Alert;import mx.validators.ValidationResult;import mx.collections.ArrayCollection;[Bindable]private var dp:ArrayCollection=newArrayCollection([{col1:'1',col2:'2',col3:'3'},{col1:'21',col2:'22',col3:'23'},{col1:'31',col2:'32',col3:'33'}]);private function changeRow1():void{dp.getItemAt(0)['col1'] = Math.round(Math.random()*100);dp.getItemAt(0)['col2'] = Math.round(Math.random()*100); dp.getItemAt(0)['col3'] = Math.round(Math.random()*100);dp.refresh();}private function changeRow2():void{dp.getItemAt(1)['col1'] = Math.round(Math.random()*100); dp.getItemAt(1)['col2'] = Math.round(Math.random()*100); dp.getItemAt(1)['col3'] = Math.round(Math.random()*100);dp.refresh();}private function changeRow3():void{dp.getItemAt(2)['col1'] = Math.round(Math.random()*100); dp.getItemAt(2)['col2'] = Math.round(Math.random()*100); dp.getItemAt(2)['col3'] = Math.round(Math.random()*100);dp.refresh();}]]></mx:Script><mx:VBox width="100%" height="100%"><mx:DataGrid dataProvider="{dp}"><mx:columns><mx:DataGridColumn dataField="col1"><mx:itemRenderer><mx:Component><mx:Label><mx:Script><![CDATA[private var lastData:Number;private var frameCount :Number=-1;override public function set data(value:Object):void{super.data = value;if(value != null){if(lastData < value['col1']){ //lastData是临时数据,存储老的数据frameCount =15;//控制闪烁持续时间变量this.setStyle("color","0xFF0000");//红色addEventListener("enterFrame", enterFrameHandler);}else if( lastData > value['col1']){frameCount =15;//控制闪烁持续时间变量this.setStyle("color","0x00FF00");//绿色addEventListener("enterFrame", enterFrameHandler);}lastData = value.col1;}}private function enterFrameHandler(event:Event):void{frameCount--;if (frameCount < 0){this.setStyle("color","0x0B333C");//颜色恢复成默认颜色removeEventListener("enterFrame", enterFrameHandler);}}]]></mx:Script></mx:Label></mx:Component></mx:itemRenderer></mx:DataGridColumn><mx:DataGridColumn dataField="col2"><mx:itemRenderer><mx:Label><mx:Script><![CDATA[private var lastData:Number;private var frameCount :Number=-1;override public function set data(value:Object):void{super.data = value;if(value != null){if(lastData < value['col2']){ //lastData是临时数据,存储老的数据frameCount =15;//控制闪烁持续时间变量this.setStyle("color","0xFF0000");//red addEventListener("enterFrame", enterFrameHandler);}else if( lastData > value['col2']){frameCount =15;//控制闪烁持续时间变量this.setStyle("color","0x00FF00");//绿色addEventListener("enterFrame", enterFrameHandler);}lastData = value.col2;}}private function enterFrameHandler(event:Event):void{frameCount--;if (frameCount < 0){this.setStyle("color","0x0B333C");//颜色恢复成默认颜色removeEventListener("enterFrame", enterFrameHandler);}}]]></mx:Script></mx:Component></mx:itemRenderer></mx:DataGridColumn><mx:DataGridColumn dataField="col3"><mx:itemRenderer><mx:Component><mx:Label><mx:Script><![CDATA[private var lastData:Number;private var frameCount :Number=-1;override public function set data(value:Object):void{super.data = value;if(value != null){if(lastData < value['col3']){ //lastData是临时数据,存储老的数据 frameCount =15;//控制闪烁持续时间变量this.setStyle("color","0xFF0000");//红色addEventListener("enterFrame", enterFrameHandler);}else if( lastData > value['col3']){frameCount =15;//控制闪烁持续时间变量this.setStyle("color","0x00FF00");//绿色addEventListener("enterFrame", enterFrameHandler);}lastData = value.col3;}}private function enterFrameHandler(event:Event):void{frameCount--;if (frameCount < 0){this.setStyle("color","0x0B333C");//颜色恢复成默认颜色removeEventListener("enterFrame", enterFrameHandler);}}]]></mx:Script></mx:Label></mx:Component></mx:itemRenderer></mx:DataGridColumn></mx:columns></mx:DataGrid><mx:Button click="changeRow1()" label="Change Row1"/><mx:Button click="changeRow2()" label="Change Row2"/><mx:Button click="changeRow3()" label="Change Row3"/></mx:VBox></mx:Application>在线演示如果你要的是当数据变化是闪烁的是背景色当然也可以,只需要简单修改一下,这里我并没有对这个itemRenderer进行封装,有兴趣可以自己去封装一下。
先介绍表格EXDBGird,因为继承DBGridEh,原本就是继承DBGrid 的,但DBGridEh 功能更强,就沾沾光吧,这部分就不说了,下面介绍的功能或未实现,但先写出来。
DBGridEh是要交费的,请自觉交费。
ShowID ------显示记录号,options-dgIndicator同时为trueIDAlignment------显示记录号对齐方式IDFont------显示记录号字体目前为止未见到完美显示记录号的数据表格,这是本人制作此控件的目标,新版的记录号是自行计算和维护的。
ShowRecID------未实现,取代与记录号有关的功能------Alignment对齐方式------Font字体------Visible是否显示ShowRecCount------在左下角现实总行数,FootrRowCount必须大于等于1------Color背景色------Font字体------Visible是否显示------(Alignment)与记录号共用LeftRightRoll------按左右键移动光标会滚到上或者下一行CHNCurrencyStyle-----中国式财务金额栏,新版重新设计与网内流行的设计有区别------Color背景色------Currency字体------CurrencySymbol货币符号------CurrencySymbolAligned货币符号对齐方式,设为true时总在最左列------CurrencyTitle标题------CurrencyTitleFont标题字体------DecimalNumber小数位数------DecimalSeparatorColor小数分隔线的颜色------GridLineColor间隔线颜色------GridLineWidth间隔线宽度------kilobitSeparatorColor千位线颜色------Margin数字与相邻间隔线的距离,可以设为负数,让间隔线更密------NegativeColor负数的颜色------NegativeFont负数的字体------ShowCurrencyTitle是否显示标题,可能要设置表格的TitleHeight------ShowNegativeColor是否使用负数颜色------ShowNegativeFont是否使用负数字体------ShowNegativeSign负数是否显示负号------TextLayout数字对齐方式------ZeroEmpty数据为0时是否显示要显示中国式财务金额栏,还需要在表格的Columns属性选择一个字段,将DisplayCHNCurrency设为真,把MaxWidth也设置一下,以限制宽度。
Delphi中DBEdit组件使用方法
Delphi的DBEdit组件位于组件板的Data Controls页上用于编辑数据表当前记录某字段的值 DBEdit组件的主要属性与方法如下主要属性
( )DataSource
用于选择数据源使DBEdit组件通过数据源与数据表连接当DBEdit通过数据源与数据表连接后显示数据表的哪一个字段则是由DataField字段决定的
( )DataField
用于选择数据字段如果DataField设置为TB 则DBEdit用于显示与编辑字段TB 的值
DataSource与DataField是数据界面组件用于选择数据表与字段的最重要的个属性
( )Enabled
当Enabled为True时数据界面组件有效此时组件可用于编辑操作当Enabled为False时数据界面组件无效运行后该组件呈灰色不能用鼠标或键盘对该组件进行操作
( )ReadOnly
当ReadOnly为True时数据只能读不能修改;为False时数据可读可写默认值为False
以上属性也是大多数数据界面组件的共同属性因此在下面的组件介绍中不再重复介绍上述属性
主要方法
( )OnChange
当字段内容发生变化时触发该事件
( )OnClick
用鼠标单击组件触发该事件
( )OnDblClick
用鼠标双击组件触发该事件
( )OnKeyDown
当键按下时触发该事件
( )OnKeyUp
当键松开时触发该事件
( )OnMouseDown
当鼠标按下时触发该事件
( )OnMouseUp
当鼠标松开时触发该事件
lishixinzhi/Article/program/Delphi/201311/24809。
DELPHI 表格控件DBGridEh属性设置详解----白波九道-----Allowedoperations[alopInsertEh,alopUpdateE h,alopDeleteEh,alopAppen dEh]允许操作类型:插入、更新、删除、追加Allowedselections[gstRecordBookmarks,gst Rectangle,gstColumns,gst All] gstRecordBookmarks:书签选中行 gstRectangle :区域选择 gstColumns :列选择 gstAll :所有AutoFitColWidths以自动重置列宽来设置网格的宽度等于客户区宽度AlwaysShowEditBu tton列显示下拉编辑按钮 AutoDropDown 自动下拉框DblClickNextVal 双击单元格为下一个值,数值为加1,列表下下一个 DropDownShowTitl es下拉框显示标题 DropDownSizing 下拉框可否手动调整大小 EndEllipsis 列内容显示不全的显示省略号 [Footer].Tooltips 底栏是否显示提示 HighLightRequired Layout内容位置 Alignment 标题对齐方式 Color 标题颜色EndEllipsis 标题过长用省略号结束 Orientation 标题文字方向 TitleButton 是否显示标题按钮 TitleTooltips 标题是否显示提示 ColumnDefValuesEh (列缺省值)Tooltips是否显示提示Columns[index]/Columns[ColumnName] 列对象,可用索引和名称调用 ColumnsOptimizeWidth根据内容自动调整列宽 Constraints 控件尺寸约束规定 ContraColCount 右侧锁定列 Ctl3D 3d 风格显示 Cursor显示鼠标指针样式 Active 激活数据分组 Color汇总行颜色DefaultStateExpand ed 默认显示是否为为全展开 Font 汇总行字体显示选项DataGrouping(数据分组设置) 表格中显示如EXCEL 中的分类汇总效果须加 MemT ableEh DataSetDriverEh,GroupLevels分组的级数如先按国别分组再按城市分GroupPanelVisible是否显示顶部的分组图示面板 ParentColor 使用父件颜色设置 Uses 添加EhLibMTE ParentFont 使用父件字体设置 AutoEdit自动提交表格修改到数据源 Dataset 数据集选项 Enabled 启用数据源 Datasoure (数据源设置) Tag 数据源标记(LongInt)DefaultDrawing 使用缺省的方式绘制表格,如为FALSE 须 OnDrawDataCell 事件中提供自己的例程 DrawGraphicDataDrawMemoText显示文本式备注字段EditActions[geaCutEh,geaCopyEh,gea PasteEh,geaDeleteEh,geaS electAllEh] 编辑属性,设置是否可以剪切、复制、粘贴、删除、选择 sebshowOnlyforCur Celleh只在当前单元格显示 sebshowOnlyforCur Roweh只在当前行显示 sebshowOnlyWhen GridActiveEh 当表格激活时显示EditButtonShowOptio ns(编辑按钮显示选项)sebshowOnlyWhen DataEditingEh当单元格进入编辑状态时显示 EvenRowColor 偶数行颜色FixedColor 固定区域颜色(如表头列头) Flat 平面显示效果(标题行渐变色须启用) Font 字体设置选项 FooterColor 底栏颜色 FooterFont 底栏字体设置 FooterRowCount 底栏行数 FrozenCols左侧冻结列数 ExtScrollBarSmoothStep True 平滑滚动/False 按列滚动 Tracking True 跟踪显示/Fasle 松开后显示 HorzScrollBar (水平滚动条设置) Visible 是否显示 Imemode 输入法模式选项 ImeName输入法 gioShowRowIndicatorEh 显示行指针 gioShowRecNoEh 显示行号 IndicatorOption (行首指示选项)gioShowRowselCheckbox esEh显示行选择框 IndicatorTitle (行道指示标题)DropdownMenupmNoVisibleCols/ PopupMenu1表头下拉菜单样式ShowDropdownSign显示下拉箭头图案 TitleButton 按钮是否启用 UseGlobalMenu用全局菜单 Left左端位置 MinAutoFitWidth 自适应宽度最小值 Name 控件名称 OddRowColor奇数行颜色 dgEdit能否编辑,dgAlwaysShowEditor 总是显示编辑项,选中时单击单元格直接进入编辑状态,否则双击进入编辑状态 dgTitles 显示列标题 dgIndicator 显示行首指针dgColumnResize 可否调整列宽 dgColLines 显示列线 dgRowLines 显示行线dgTabs 接收TAB 键移动到下一单元格 dgRowSelect整行选择 dgAlwaysShowSelection 显示选择区域 dgConfirmDelete 删除时确认 dgCancelOnExitOptions(表格通用选项)dgMultiSelect 可多行选择dghFixed3D 固定区(表头列头)3D 效果(渐变色须启用) dghFrozen3D 冷区3D 效果 dghFooter3D 栏底3D 效果 dghData3D数据区3D 效果 dghResizeWholeRightPartdghHighlightFocus 高光选择焦点dghClearSelection 移到下一个单元时是否清除已选记录 dghFitRowHeightToText 按文本适应行高 dghAutoSortMarking 自动排序 dghMultiSortMarking 多级排序 dghEnterAsTab 回车键作为TAB dghTraceColSizing 移动列宽时动态显示内容dghIncSearch允许在数据网格中进行增量搜索 Ctrl+F - 开始增量搜索。
实战Delphi数据网格色彩特效Delphi中的数据网格控件(TDbGrid)对于显示和编辑数据库中大量的数据起着十分重要的作用;然而,在使用数据网格控件的同时,也往往因为表格中大量的数据不易区分,而令操作者眼花缭乱。
如何提高网格控件的易用性,克服它的此项不足呢?本文从改变数据网格的色彩配置角度,提出了一种解决办法。
以下为数据网格控件的6种特殊效果的实现方法,至于数据网格控件与数据集如何连接的方法从略。
1.纵向斑马线效果:实现网格的奇数列和偶数列分别以不同的颜色显示,以区别相邻的数据列。
file://在DbGrid的DrawColumnCell事件中编写如下代码:Case DataCol Mod2=0ofTrue:DbGrid1.Canvas.Brush.Color:=clBlue;file://偶数列用蓝色False:DbGrid1.Canvas.Brush.Color:=clAqua;file://奇数列用浅绿色End;DbGrid1.Canvas.Pen.Mode:=pmMask;DbGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);2.纵向斑马线,同时以红色突出显示当前单元格效果:以突出显示当前选中的字段。
file://将上述代码修改为:Case DataCol Mod2=0ofTrue:DbGrid1.Canvas.Brush.Color:=clBlue;file://偶数列用蓝色False:DbGrid1.Canvas.Brush.Color:=clAqua;file://奇数列用浅绿色End;If((State=[gdSelected])or(State=[gdSelected,gdFocused])) thenIf Not DbGrid1.SelectedRows.CurrentRowSelected thenDbGrid1.Canvas.Brush.Color:=clRed;file://当前选中单元格显示红色DbGrid1.Canvas.Pen.Mode:=pmMask;DbGrid1.DefaultDrawColumnCell(Rect,DataCol,Column, State);上述两种方法突出了列的显示效果。
elphi中数据控制构件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: DBDEMOSTableName: EMPLOYEE.DBActive: True;DataSource1 DataSet: Table1DBGrid1 DataSource1: DataSource1DefaultDrawing: FalseSpinEdit1 Increment:200Value: 20000ColorGrid1 GridOrdering: go16*12.为DBGrid1构件OnDrawDataCell事件编写响应程序:procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;Field: TField; State: TGridDrawState);beginif Table1.Fieldbyname(′Salary′).value=SpinEdit1.value thenDBGrid1.Canvas.Brush.Color:=ColorGrid1.ForeGroundColorDBGrid1.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的背景颜色来显示。
DBGridEh V6.2使用实测说明说明v6.2版本看起来想在属性结构上进行大的调整,但处于兼容性的考虑,低版本的属性也进行必要的保留,因此出现了较多功能相同、属性名称类似但在属性设置面板中分组位置不一样的情况较多。
1.属性1.1.Align1.2.AllowedOperations:允许的DML操作(alopInsertEh、alopUpdateEh、alopDelete、alopAppendEh)只可进行表格输入控制,通过数据源或其它代码操作可以绕过DBGridEh的控制,设置alopUpdateEh=True、alopInsertEh=Flse,可以限制操作者只能修改数据而不能新增数据,不必要将ReadOnly设置为True1.3.AllowedSelections:(gstRecordBookmarks、gstRectangle、gstColumns、gstAll)1.4.Anchors1.5.AutoFitColumnWidths:自动适应列宽(能实现功能但效果不理想)AutoFitColumnWidths=FalseAutoFitColumnWidths=True1.6.BackgroundData:设置背景图片(图片边界用红色线条特殊标识)1.6.1.ExcludeFooter:(页脚汇总栏对数据区域的影响)Visible=True、Picture=…, ExcludeFooter=True(图片底部不会被Footer遮住)Visible=True、Picture=…, ExcludeFooter=False(图片底部被Footer遮住)1.6.2.ExcludeIndicator(左侧行标栏对数据区域的影响)<OptionsEh.dghShowRecNo=True>,Visible=True、Picture=…, ExcludeIndicator=FalseVisible=True、Picture=…, ExcludeIndicator=True1.6.3.ExclueTitleVisible=True、Picture=…, ExclueTitle=FalseVisible=True、Picture=…, ExclueTitle=True1.6.4.HorzMargin:水平偏移量Visible=True、Picture=…, HorzMargin=-100Visible=True、Picture=…, HorzMargin=+1001.6.5.Picture:设置背景图片1.6.6.Placement:放置位置(左上..右下等九个局域、平铺、拉升、裁剪等)Visible=True、Picture=…, Placement= ipTopCenterEh1.6.7.VerMargin:垂直偏移量1.6.8.VisibleVisible=True、Picture=…, 3个Exclue=True(图片全显示)1.7.BidiMode1.8.Border:边框设置1.9.BorderStyle:设置边框样式,与Border.Style同效BorderStyle= bsSingleBorderStyle= bsNone1.10.Color:数据区背景色Color= $00FFDDDD1.11.ColumnDefValues:Column列默认的相同属性设置,若Column单独设置且不一样时,以Column列的个性设置为准。
delphi drawgrid 用法摘要:1.Delphi DrawGrid组件简介2.DrawGrid组件的基本属性3.DrawGrid组件的方法和事件4.使用DrawGrid组件绘制各种图形5.DrawGrid组件在实际项目中的应用正文:Delphi是一款由Borland公司开发的编程软件,它提供了许多丰富的组件,方便程序员进行各种功能的开发。
在Delphi中,DrawGrid组件是一个非常实用的组件,它可以用于在窗体或控件上绘制各种图形,如直线、矩形、多边形等。
本文将详细介绍DrawGrid组件的用法及相关应用。
1.Delphi DrawGrid组件简介DrawGrid组件是Delphi的一个标准组件,它位于Visual Component Library(VCL)中。
DrawGrid组件可以在窗体或控件上绘制网格,用户可以通过属性设置网格的行列数、单元格大小以及背景颜色等。
2.DrawGrid组件的基本属性DrawGrid组件的基本属性如下:- Align:设置DrawGrid组件的对齐方式。
- AllowArrows:设置是否允许在DrawGrid组件上绘制箭头。
- ArrowSize:设置箭头的大小。
- Axis:设置DrawGrid组件的坐标轴。
- BackgroundColor:设置DrawGrid组件的背景颜色。
- BorderStyle:设置DrawGrid组件的边框样式。
- BorderWidth:设置DrawGrid组件的边框宽度。
- CellSize:设置DrawGrid组件的单元格大小。
- ColumnCount:设置DrawGrid组件的列数。
- ColumnSpacing:设置DrawGrid组件的列间距。
- Enabled:设置DrawGrid组件是否可用。
- FillStyle:设置DrawGrid组件的填充样式。
- FixedCellSize:设置DrawGrid组件是否固定单元格大小。
delphi drawgrid 用法(最新版)目录1.Delphi DrawGrid 简介2.Delphi DrawGrid 用法详解3.Delphi DrawGrid 的应用实例正文【Delphi DrawGrid 简介】Delphi DrawGrid 是一种在 Delphi 编程环境下绘制网格的工具,通过使用该工具,开发人员可以在 Delphi 窗体上轻松地绘制出各种不同风格的网格,以满足不同的需求。
Delphi DrawGrid 不仅可以提高开发效率,还可以使窗体更具有美观性。
【Delphi DrawGrid 用法详解】Delphi DrawGrid 的用法分为以下几个步骤:1.首先,需要在 Delphi 项目中导入 DrawGrid 组件。
可以在Delphi 的组件库中找到 DrawGrid 组件,然后将其拖拽到窗体上。
2.在 Delphi 窗体上创建一个 DataGrid,用于存储和显示数据。
DataGrid 的列数和行数可以根据需要进行调整。
3.在 Delphi 窗体上创建一个用于绘制网格的 TBitMap 图形控件。
设置该控件的大小和位置,使其与 DataGrid 相适应。
4.编写 Delphi 代码,用于实现 DrawGrid 功能。
首先,需要创建一个用于存储网格样式和属性的数据结构。
然后,根据所选定的样式和属性,编写相应的绘制代码。
5.编写代码,用于处理 DataGrid 的事件。
例如,当 DataGrid 的行或列发生变化时,需要重新绘制网格。
6.编写代码,用于处理用户交互。
例如,当用户点击某个单元格时,需要高亮显示相应的网格区域。
【Delphi DrawGrid 的应用实例】下面是一个 Delphi DrawGrid 的简单应用实例,用于实现一个可拖拽和排序的数据网格。
1.在 Delphi 项目中创建一个新的窗体,并导入 DrawGrid 组件。
2.在窗体上创建一个 DataGrid,用于存储和显示数据。
在Delphi中如何动态更改DBGrid的颜色
DBGrid控件是一个有许多用户接口的显示数据库的控件,以下的程序告诉您如何根据显示的内容改变字体的显示颜色。
例如,如果一个城市的人口大于200万,我们就让它显示为蓝色。
使用的控件事件为DBGrid.OnDrawColumeCell.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
constRect:TRect;DataCol:
Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1.FieldByName('Population').AsInteger> 20000000 then
DBGrid1.Canvas.Font.Color := clBlue;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
上面的例子是简单的,但是你可以根据自己的需要扩充,例如字体也变化等,甚至你可以调用画圆的函数在数字上画上一个红色的圆圈。
定义网格背景颜色
在 Form1 上放置 DBGrid1 、Query1、DataSource1 三个数据库组件,设置相关的属性,
使 DBGrid1 能显示表中的数据。
然后,在 DBGrid1 的 onDrawColumnCell 事件中键入以下
代码,然后运行程序,就可以看到神奇的结果了。
本代码在 Windows98、Delphi5.0 环境下调
试通过。
procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;
constRect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState); var i :integer;
begin
ifgdSelected in State then Exit;
// 定义表头的字体和背景颜色:
for i :=0 to (Sender as TDBGrid).Columns.Count-1 do
begin
(Sender as TDBGrid).Columns[i] :='宋体'; // 字体
(Sender as TDBGrid).Columns[i].Title.Font.Size :=9; // 字体大小
(Sender as TDBGrid).Colum ns[i].Title.Font.Color :=$000000ff; // 字体颜色( 红色)
(Sender as TDBGrid).Col umns[i].Title.Color :=$0000ff00; // 背景色( 绿色)
end;
// 隔行改变网格背景色:
if Query1.RecNo mod 2 = 0 then
(Sender as TDBGrid).Can vas.Brush.Color := clInfoBk //定义背景颜色
else
(Sender as TDBGrid).Canvas.Brush.Color := RGB(191, 255, 223); // 定义背景颜色
// 定义网格线的颜色:
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
with (Sender as TDBGrid).Canvas do // 画 cell 的边框
begin
Pen.Color := $00ff0000; //定义画笔颜色( 蓝色)
MoveTo(Rect.Left, Rect.Bottom); // 画笔定位
LineTo(Rect.Right, Rect.Bottom); // 画蓝色的横线
Pen.Color := $0000ff00; //定义画笔颜色( 绿色)
MoveTo(Rect.Right, Rect.Top); // 画笔定位
LineTo(Rect.Right, Rect.Bottom); // 画绿色的竖线 end;
end;。