Delphi中DBGrid行列颜色设置
Delphi_中DBGridEh的用法
先介绍表格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也设置一下,以限制宽度。
改变DataGrid指定行的颜色
新建 文本文档 (2).txt 在DataGrid(WinForm)中改变符合指定条件的行颜色的方法 鼓起勇气贴上这篇帖子,实在不知道究竟是否有人会看。而随着Whidbey的推出,这个问题应该已经不复存在——新的DataGridView控件据说可以直接设置行颜色—— 不过考虑到Whidbey目前只是测试版,DataGrid控件还在广泛地使用,本文或许能对面临同样问题的朋友稍有帮助。 大家都知道DataGrid控件通过其属性TableStyles控制每个对应的DataTable的显示风格,而每个TableStyle又通过其属性GridColumnStyles控制每一列的显示风格,但 却没有属性或方法可以直接设置每行数据的显示风格。这或许是出于使用方法考虑(在绑定数据源前当然不知道有哪些行,行中有哪些数据),或许是出于性能考虑( 为每行建立显示风格索引的代价会比较大),或者是其他考虑(我没想到的^_^)。但实际工作中这种需求很多,比如“当资源小于某个临界值就变红色显示”之类 的。如果可以做到改变行的颜色,应该能满足这些需求中的大部分。然而按照常规方法,在一列当中,每个单元格(即每行)的显示风格都是相同的。 改变DataGrid控件行颜色的基本技巧就是重写DataGridColumnStyle的Paint方法,更改其中的foreBrush和backBrush两个参数,再重新调用基类的Paint方法。当然实 际操作中我们不能直接继承DataGridColumnStyle类,而是要从它的子类DataGridText
DELPHI 表格控件DBGridEh全属性设置详解 最全的属性设置说明
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数据网格色彩特效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);上述两种方法突出了列的显示效果。
gridview设置隔行换色
最终效果如上图所示:实现代码如下:<!-- 设置gridview隔行换色以及鼠标经过和选中的颜色--><script type="text/javascript">//GridView ID, 正常行背景色,交替行背景色,鼠标指向行背景色,鼠标点击后背景色function GridViewColor(GridViewId, NormalColor, AlterColor, HoverColor, SelectColor) {var AllRows = document.getElementById(GridViewId).getElementsByTagName("tr");//设置每一行的背景色和事件,循环从1开始而非0,可以避开表头那一行for (i = 1; i < AllRows.length; i++){AllRows[i].style.background = i % 2 == 0 ? NormalColor : AlterColor;//如果指定了鼠标指向的背景色,则添加onmouseover/onmouseout事件//处于选中状态的行发生这两个事件时不改变颜色if (HoverColor != ""){AllRows[i].onmouseover = function () { if (!this.selected) this.style.background = HoverColor; }if (i % 2 == 0){AllRows[i].onmouseout = function () { if (!this.selected) this.style.background = NormalColor; }}else{AllRows[i].onmouseout = function () { if (!this.selected) this.style.background = AlterColor; }}}//如果指定了鼠标点击的背景色,则添加onclick事件//在事件响应中修改被点击行的选中状态if (SelectColor != ""){AllRows[i].onclick = function (){this.style.background = this.style.background == SelectColor ? HoverColor : SelectColor;this.selected = !this.selected;}}}}</script>在body中引用如下:<body onload='GridViewColor("GridView1","#bbb","#fff","#0CF","#0CF")'>。
delphi DBgrid 使用大全
在DELPHI中经常用到网格控件(DBGrid)显示数据,网格控件只提供了每一行的颜色属性,但在实际应用中我们经常希望它按某一行某一项的取值不同显示不同的颜色,甚至在网格中的单位表格项中显示出图像等等,下面我们以一个简单的例子来告诉大家怎么做。
比如我们要求如果春季有退书用红色表示,如果秋季有退书用黄色表示利用DBGrid自绘功能可以很容易地实现这样的要求。
用户可以处理DBGrid的OnDrawColumnCell事件,在其中实现特殊的效果。
要判断记录是否满足要求,可以使用DBGrid的DataLink属性获得数据,但DBGrid的DataLink属性属于保护成员,必须在 TCustomDBGrid的子类中调用。
typeTMyCustomDBGrid = class(TC ustomDBGrid);procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);varsCjts,sQjTs:String;beginwith TMyCustomerDBGrid(Sender) dobeginCjts:=DataLink.Fields[5].AsString;sQjts:=DataLink.Fields[9].AsString;if sCjts<>…… then//春季退书数量>0的用红色显示Canvas.Brush.Color := clRedelseif sQjts<>…… then//秋季退书数量>0的用黄色显示Canvas.Brush.Color := clY ellowelseCanvas.Brush.Color:=clWhite;Canvas.Font.Color:=clBlack;canvas.fillrect(rect);canvas.textout(rect.left+4,rect.top+4,Column.Field.AsString);end;end;由此方法可以延伸出其它控件的多种修饰方法,比如可以按数据项值采用不同的颜色,可以按记录号显示不同的颜色。
最新Delphi中DBGrid行列颜色设置汇总
D e l p h i中D B G r i d行列颜色设置Delphi中DBGrid行列颜色设置1. 纵向斑马线效果:实现网格的奇数列和偶数列分别以不同的颜色显示,以区别相邻的数据列。
file://在DbGrid的DrawColumnCell事件中编写如下代码:Case DataCol Mod 2 = 0 ofTrue: 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 Mod 2 = 0 ofTrue: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色End;If ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) t henIf Not DbGrid1.SelectedRows.CurrentRowSelected thenDbGrid1.Canvas.Brush.Color:=clRed; file://当前选中单元格显示红色DbGrid1.Canvas.Pen.Mode:=pmMask;DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);上述两种方法突出了列的显示效果。
Delphi表格控件DBGridEh应用实例3-编辑功能
3. 编辑功能1) 多选TDBGridEh 允许在选定的区域上进行选择记录,列以及矩形区域等操作:允许多选会影响下面这些属性:Options 选项中的dgMultiSelect 属性- 设置是否允许多选。
Options 选项中的dghClearSelection 属性- 设置在用户移到下一个单元时是否清除已选记录。
Options 选项中的EdITActions属性-设置用户可以在已选记录上执行哪些操作(比如,拷贝,剪切,删除,粘贴,全选等)。
Options 选项中的AllowedSelections 属性-设置允许选定记录的类型(比如,行,列,矩形区域等)。
Options 选项中的Selection 属性-设置一个当前的多选状态,已选记录,列或矩形区域以及存取它们的属性和函数。
2) 文本多行显示Column.WordWrap 为True可以使数据行中文本多行显示。
如果行高>文本行,它就换行。
3) 显示备注字段设置DrawMemoText to True来显示文本式的备注字段。
.4) 如何让dbgrideh1显示数据时只显示两位小数DBGrideh1.Columns[0].DisplayFormat := '#.#0';5) 获得当前DBGridEh表中单元格的序号DBGridEh1.SelectedIndex6) 怎样在dbgridEh和Edit中显示金额的千分号1、dbrigeh.columns[0].DisplayFormat := ,0.002、2、adoquery1.fields[0].DisplayFormat := #,##0.003、都可以4、在保存之前,记得把','号全部replace 掉,5、tmpEdit.Text := StringReplace(tmpEdit.Text, ',', '', [rfReplaceAll]);6、tmpEdit.Text := StringReplace(tmpEdit.Text, ',', '', [rfReplaceAll]);7、在out 时调用函数自动加千分号8、tmpEdit.Text := FloatFormat(tmpEdit.Text);9、输出整型的10、function TTblRecordEditFrame.IntFormat(intValue: string): string;11、begin12、//13、if intValue = '' then14、Result := ''15、else16、begin17、intValue := StringReplace(intValue, ',', '', [rfReplaceAll]);18、intValue := StringReplace(intValue, ',', '', [rfReplaceAll]);19、Result := formatfloat('#,###,##0', StrToFloat(intValue));20、end;21、end;22、//格式化浮点数,加千分号,删除后边的023、function TTblRecordEditFrame.FloatFormat(floatValue: string): string;24、var25、decPart, intPart: string;26、i, j: Integer;27、numFormat: string;28、begin29、//30、if floatValue = '' then31、Result := ''32、else33、begin34、floatValue := StringReplace(floatValue, ',', '', [rfReplaceAll]);35、floatValue := StringReplace(floatValue, ',', '', [rfReplaceAll]);36、i := pos('.', floatValue);37、if i > 0 then //有小数点38、begin39、intPart := Copy(floatValue, 1, i - 1);40、decPart := copy(floatValue, i + 1, Length(floatValue));41、//从后边开始清除042、for j := Length(decPart) downto 1 do43、begin44、if decPart[j] = '0'45、then Delete(decPart, j, 1)46、else47、Break;48、end;49、end50、else //无小数点51、begin52、intPart := floatValue;53、decPart := '';54、end;55、if decPart <> '' then56、numformat := '#,###,##0.' + StringOfChar('0', Length(decPart))57、else58、numFormat := '#,###,##0';59、Result := formatfloat(numFormat, StrToFloat(intPart + '.' + decpart));60、end;7) 请问怎么才能使DBGridEh不滚动就能提交数据?可以在关闭窗口时,判断一下数据集状态,然后自动保存。
delphi dbgriddrawcolumncell的参数
Delphi dbgriddrawcolumncell的参数介绍在Delphi中,dbgriddrawcolumncell是一个事件,它允许我们自定义DBGrid控件中每个单元格的绘制方式。
通过使用这个事件,我们可以改变单元格的背景颜色、文本颜色、字体样式等,以满足我们的特定需求。
本文将详细探讨dbgriddrawcolumncell事件的参数及其用法。
事件参数dbgriddrawcolumncell事件有以下参数:1.Sender: TObject:事件的调用者,即DBGrid控件本身。
2.Col: Integer:当前绘制的单元格所在的列索引。
3.Row: Integer:当前绘制的单元格所在的行索引。
4.Rect: TRect:当前绘制的单元格的边界矩形。
5.State: TGridDrawState:当前绘制的单元格的状态,包括选中状态、焦点状态等。
6.Highlight: Boolean:当前绘制的单元格是否处于高亮状态。
用法示例下面是一个简单的示例,演示如何使用dbgriddrawcolumncell事件来自定义单元格的绘制方式:procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);beginif (Column.FieldName = 'Status') and (Column.Field.AsString = 'Completed') t henbeginDBGrid1.Canvas.Brush.Color := clGreen; // 设置背景颜色为绿色DBGrid1.Canvas.Font.Color := clWhite; // 设置文本颜色为白色end;DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);end;在上面的示例中,我们检查当前绘制的单元格所在的列是否为”Status”列,并且该单元格的值是否为”Completed”。
Delphi中DBGrid应用全书(一)
在 Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一。
但是 DBGrid 缺省的外观未免显得单调和缺乏创意。
其实,我们完全可以在我们的程序过编程来达到美化DBGrid 外观的目的。
通过编程,我们可以改变 DBGrid 的表头、网格、网格线的前景色和背景色,以及相关的字体的大小和风格。
以下的示例程序演示了对 DBGrid 各属性的设置,使 Delphi 显示的表格就像网页中的表格一样漂亮美观。
示例程序的运行:在 Form1 上放置 DBGrid1、Query1、DataSource1 三个数据库组件,设置相关的属性,使 DBGrid1 能显示表中的数据。
然后,在 DBGrid1 的 onDrawColumnCell 事件中键入以下代码,然后运行程序,就可以看到神奇的结果了。
本代码在 Windows98、Delphi5.0 环境下调试通过。
procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);var i :integer;beginif gdSelected in State then Exit;//定义表头的字体和背景颜色:for i :=0 to (Sender as TDBGrid).Columns.Count-1 dobegin(Sender as TDBGrid).Columns[i] :='宋体'; //字体(Sender as TDBGrid).Columns[i].Title.Font.Size :=9; //字体大小(Sender as TDBGrid).Columns[i].Title.Font.Color :=$000000ff; //字体颜色(红色)(Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00; //背景色(绿色) end;//隔行改变网格背景色:if Query1.RecNo mod 2 = 0 then(Sender as TDBGrid).Canvas.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 的边框beginPen.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;2.Delphi5 - 隔行改变DBGrid网格颜色 :在 Form1 上放置 DBGrid1、Query1、DataSource1 三个数据库组件,设置相关的属性,使 DBGrid1 能显示表中的数据。
delphi DBgrid 使用大全
在DELPHI中经常用到网格控件(DBGrid)显示数据,网格控件只提供了每一行的颜色属性,但在实际应用中我们经常希望它按某一行某一项的取值不同显示不同的颜色,甚至在网格中的单位表格项中显示出图像等等,下面我们以一个简单的例子来告诉大家怎么做。
比如我们要求如果春季有退书用红色表示,如果秋季有退书用黄色表示利用DBGrid自绘功能可以很容易地实现这样的要求。
用户可以处理DBGrid的OnDrawColumnCell事件,在其中实现特殊的效果。
要判断记录是否满足要求,可以使用DBGrid的DataLink属性获得数据,但DBGrid的DataLink属性属于保护成员,必须在TCustomDBGrid的子类中调用。
typeTMyCustomDBGrid=class(TCustomDBGrid);procedure TForm1.DBGrid1DrawColumnCell(Sender:TObject;const Rect:TRect;DataCol:Integer;Column:TColumn;State:TGridDrawState);varsCjts,sQjTs:String;beginwith TMyCustomerDBGrid(Sender)dobeginCjts:=DataLink.Fields[5].AsString;sQjts:=DataLink.Fields[9].AsString;if sCjts<>‘‘then//春季退书数量>0的用红色显示Canvas.Brush.Color:=clRedelseif sQjts<>‘‘then//秋季退书数量>0的用黄色显示Canvas.Brush.Color:=clYellowelseCanvas.Brush.Color:=clWhite;Canvas.Font.Color:=clBlack;canvas.fillrect(rect);canvas.textout(rect.left+4,rect.top+4,Column.Field.AsString);end;end;由此方法可以延伸出其它控件的多种修饰方法,比如可以按数据项值采用不同的颜色,可以按记录号显示不同的颜色。
设置DataGrid(WinForm)中行的背景色
设置DataGrid(WinForm)中⾏的背景⾊前⼀阵⼦在⼀个项⽬中⽤到了这个技巧,这是⽹上搜来的,感觉很不错{//使⽤DataGridTableStyle 显⽰DataGrid.DataGridTableStyle tableStyle = new DataGridTableStyle();tableStyle.MappingName = "customers";int numCols = _dataSet.Tables["customers"].Columns.Count;DataGridCellColorTextBoxColumn columnTextColumn ;for(int i = 0; i < numCols; ++i){columnTextColumn = new DataGridCellColorTextBoxColumn();columnTextColumn.HeaderText = _dataSet.Tables["customers"].Columns[i].ColumnName;columnTextColumn.MappingName = _dataSet.Tables["customers"].Columns[i].ColumnName;//为每个单元格建⽴设置背景⾊的事件.columnTextColumn.CheckCellColor += new CellColorEventHandler(SetColorValues);tableStyle.GridColumnStyles.Add(columnTextColumn);}dataGrid1.TableStyles.Clear();dataGrid1.TableStyles.Add(tableStyle);dataGrid1.DataSource = _dataSet.Tables["customers"];}public void SetColorValues(object sender, DataGridCellColorEventArgs e){//根据条件, 将相关⾏设置不同的背景⾊.//下例为国家(datagrid中第9列)为Mexico的⾏设置为红⾊,USA的⾏设为黄⾊.if(Convert.ToString(dataGrid1[e.Row,8]) == "Mexico")e.BackColor = Color.Red;elseif(Convert.ToString(dataGrid1[e.Row,8]) == "USA")e.BackColor = Color.Yellow;}#region DataGridCellColorpublic class DataGridCellColorEventArgs : EventArgs{private int _row;private Color _backcolor;public DataGridCellColorEventArgs(int row, Color val){_row = row;_backcolor = val;}public int Row{get{ return _row;}set{ _row = value;}}public Color BackColor{get{ return _backcolor;}set{ _backcolor = value;}}}//为事件建⽴委托.public delegate void CellColorEventHandler(object sender, DataGridCellColorEventArgs e);public class DataGridCellColorTextBoxColumn : DataGridTextBoxColumn{public event CellColorEventHandler CheckCellColor;public DataGridCellColorTextBoxColumn(){}//继承DataGridTextBoxColumn的Pain事件.protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, System.Windows.Forms.CurrencyManager source, int rowNum,System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush, bool alignToRight){if(CheckCellColor != null){//重绘画时,设置当前⾏的背景⾊DataGridCellColorEventArgs e = new DataGridCellColorEventArgs(rowNum, Color.White);CheckCellColor(this, e);if(e.BackColor != Color.White){backBrush = new SolidBrush(e.BackColor);}}base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);}protected override void Edit(System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Rectangle bounds, bool readOnly, string instantTe xt, bool cellIsVisible){base.Edit(source, rowNum, bounds, readOnly, instantText, cellIsVisible);}}#endregion。
006-----关于Grid中特定行显示特定颜色的问题
关于在VFP中GRID里颜色设置问题1、只设置一条记录颜色(有选择性)主要是针对一个表GRID里,当我们选择了某个记录时,要使这个记录高亮显示,以区别其他记录,方便查看。
在GRID的AfterRowColChange事件中,写入如下代码LPARAMETERS nColIndex && 系统代码Mcurrec=allt(str(recn())) && 获取当前所在记录号this.setall("dynamicbackcolor",'IIF(RECNO()=&Mcurrec.,RGB(255,0,0),RG B(255,255,255))') && 设置背景色,满足条件为红色,不满足为白色this.setall("dynamicforecolor",'IIF(RECNO()=&Mcurrec.,RGB(255,255,0), RGB(0,0,0))',"column") && 设置前景色,满足条件为黄色,不满足为黑色this.refresh && 这个刷新必须要,不然不满足条件的记录所显示的高亮显示就不会退去2、设置多种颜色(无规律性)主要是针对一个表GRID里,当记录很多时,而且某些记录具有特定的属性时,我们需要设置颜色来区分这些数据,如下代码可以在刷新或初始化表单时,设置其属性。
thisform.Grid1.SetAll("DynamicBackColor","IIF(type>=1,iif(type>=2,iif (type>=3,rgb(0,128,0),rgb(192,192,192)),rgb(255,0,0)),rgb(255,25 5,255))")如上代码可以说明,如果某记录中有一个字段type,那么根据这个字段的数据值,可以显示不同颜色,可以转换成如下公式:iif(条件1,iif(条件2,iif(条件3,iif(条件4,iif(条件5,[...iif(条件N,颜色N,颜色n-1)...,]颜色5,颜色4),颜色3),颜色2),颜色1),其他颜色)3、设置多种颜色(有规律性)这种就比较简单了,一般是在看较多记录时,多了让人眼花缭乱,所以每隔一行设置颜色,就是thisform.Grid1.SetAll("DynamicBackColor", "IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255) , RGB(0,255,0))", "Column")4、VFP中怎样使GRID表格里不同的五行,以不同的颜色显示这是3种颜色的,5种自己根据代码再增加thisform.Grid1.SetAll('dynamicbackcolor','IIF(条件1,RGB(255,255,0),IIF(条件2,RGB(255,0,0),RGB(0,255,0)))','column')。
Delphi中DBgridEh使用技巧
TDBGridEh 允许在多列上创建标题,例如:设置 eMultiTitle 属性为 True 并且填充字段的标签或列标题的标题,可以使用下面的规则:字段标签中的文本部分或列标题必须由几部分组成,并且用 "|" 分割,几个列的每一个通用部分都设置为相同。
其它字段或标题必须在相应的部分包含同样的文本。
例如:Field1.DisplayLabel := 'Title1|SubTitle1';Field2.DisplayLabel := 'Title1|SubTitle2';或DBGridEh.Columns[0].Title.Caption := 'Title1|SubTitle1';DBGridEh.Columns[1].Title.Caption := 'Title1|SubTitle2';按钮式标题设置Column.Title.TitleButton 为 True可以强制标题单元为按钮式。
写OnTitleBtnClick事件来控制用户单击标题单元时的操作。
在标题中显示位图To show bitmap in titles instead of caption use TitleImages property of TDBGridEh and ImageIndex property of TColumnTitleEh.自动用位置标识排序标题.TDBGridEh allows to show special sortmarking bitmaps (small triangles) in the right part of title cell. In order to automatically marking title by sortmarking bitmaps add dghAutoSortMarking to OptionsEh property. Add dghMultiSortMarking too in order to allow sortmarking several columns simultaneously. Set Column.Title.TitleButton to true for titles which will have possibility to change sortmarkers at run time. At runtime clicking on title will change sortmarking. Holding Ctrl key allows to mark several columns simultaneously. After user change sormarking grid call OnSortMarkingChanged event. You can write this event to change sorting and reopen in dataset. Use SortMarkedColumns property to access to sortmarked columns.标题属性的默认值使用TDBGridEh.ColumnDefValues.Title来设置标题属性的默认值。
Delphi中DBGrid行列颜色设置
Delphi中DBGr id行列颜色设置1. 纵向斑马线效果:实现网格的奇数列和偶数列分别以不同的颜色显示,以区别相邻的数据列。
file://在DbGri d的Dra wColu mnCel l事件中编写如下代码:Case DataCo l Mod 2 = 0 ofTrue: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色End;DbGrid1.Canvas.Pen.Mode:=pmMask;DbGrid1.Defaul tDraw Colum nCell (Rect, DataCo l, Column, State);2. 纵向斑马线,同时以红色突出显示当前单元格效果:以突出显示当前选中的字段。
file://将上述代码修改为:Case DataCo l Mod 2 = 0 ofTrue: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色End;If ((State = [gdSele cted]) or (State=[gdSele cted,gdFocu sed])) thenIf Not DbGrid1.Select edRow s.Curren tRowS elect ed thenDbGrid1.Canvas.Brush.Color:=clRed; file://当前选中单元格显示红色DbGrid1.Canvas.Pen.Mode:=pmMask;DbGrid1.Defaul tDraw Colum nCell (Rect, DataCo l, Column, State);上述两种方法突出了列的显示效果。
Delphi中DBGrid隔行换色美化-南山古桃-关键词:Delphi,DBGrid,美化,隔行换色
Delphi 中DBGrid 隔行换色美化-南山古桃-关键词:Delphi ,DBGrid ,美化,隔行换色2008年03月27日 星期四 下午 08:16关键词:Delphi,DBGrid,美化,隔行换色(**** (**** 转载转载转载敬敬请注明注明--本文出本文出处处:南山古桃南山古桃((nsgtao)nsgtao)的百度空的百度空的百度空间间:/nsgtao/ ****) procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);vari :integer;begin//{if gdSelected in State then Exit;//定义表头的字体和背景颜色:for i :=0 to (Sender as TDBGrid).Columns.Count-1 dobegin(Sender as TDBGrid).Columns[i] :='宋体'; //字体(Sender as TDBGrid).Columns[i].Title.Font.Size :=9; //字体大小(Sender as TDBGrid).Columns[i].Title.Font.Color :=$000000ff; //字体颜色(红色)(Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00; //背景色(绿色) end;//(**** //(**** 转载转载转载敬敬请注明注明--本文出本文出处处:南山古桃南山古桃((nsgtao)nsgtao)的百度空的百度空的百度空间间:/nsgtao/ ****) //隔行改变网格背景色:if ADOQuery1.RecNo mod 2 = 0 then(Sender as TDBGrid).Canvas.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 的边框beginPen.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;//}//***************************************************************{if gdSelected in State then Exit; //隔行改变网格背景色:if adoQuery1.RecNo mod 2 = 0 then(Sender as TDBGrid).Canvas.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//(**** //(**** 转载转载转载敬敬请注明注明--本文出本文出处处:南山古桃南山古桃((nsgtao)nsgtao)的百度空的百度空的百度空间间:/nsgtao/ ****) Pen.Color := $00ff0000; //定义画笔颜色(蓝色)MoveTo(Rect.Left, Rect.Bottom); //画笔定位LineTo(Rect.Right, Rect.Bottom); //画蓝色的横线Pen.Color := clbtnface; //定义画笔颜色(兰色)MoveTo(Rect.Right, Rect.Top); //画笔定位LineTo(Rect.Right, Rect.Bottom); //画绿色end;}//***************************************************************end;20080521找为Delphi 数据表格增加彩色elphi 中数据控制构件DBGrid 是用来反映数据表的最重要、也是最常用的构件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Delphi中DBGrid行列颜色设置1. 纵向斑马线效果:实现网格的奇数列和偶数列分别以不同的颜色显示,以区别相邻的数据列。
file://在DbGrid的DrawColumnCell事件中编写如下代码:Case DataCol Mod 2 = 0 ofTrue: 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 Mod 2 = 0 ofTrue: DbGrid1.Canvas.Brush.Color:= clBlue; file://偶数列用蓝色False: DbGrid1.Canvas.Brush.Color:= clAqua; file://奇数列用浅绿色 End;If ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) t henIf Not DbGrid1.SelectedRows.CurrentRowSelected thenDbGrid1.Canvas.Brush.Color:=clRed; file://当前选中单元格显示红色DbGrid1.Canvas.Pen.Mode:=pmMask;DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);上述两种方法突出了列的显示效果。
3.在数据网格中以红色突出显示当前选中的行。
设置DbGrid控件的Options属性中的dgRowSelect属性为真,Color属性为clAqua(背景色), 在DbGrid的DrawColumnCell事件中编写如下代码:if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) th enDbGrid1.Canvas.Brush.color:=clRed; file://当前行以红色显示,其它行使用背景的浅绿色DbGrid1.Canvas.pen.mode:=pmmask;DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);4.行突显的斑马线效果:既突出当前行,又区分不同的列(字段)。
file://其它属性设置同3,将上述代码修改为:if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) the nbeginCase DataCol Mod 2 = 0 ofTrue : DbGrid1.Canvas.Brush.color:=clRed; file://当前选中行的偶数列显示红色False: DbGrid1.Canvas.Brush.color:=clblue; file://当前选中行的奇数列显示蓝色end;DbGrid1.Canvas.pen.mode:=pmmask;DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);end;5.横向斑马线,同时以红色突显当前行效果。
file://其它属性设置同3,将上述代码修改为:Case Table1.RecNo mod 2 = 0 of file://根据数据集的记录号进行判断True : DbGrid1.Canvas.Brush.color:=clAqua; file://偶数行用浅绿色显示False: DbGrid1.Canvas.Brush.color:=clblue; file://奇数行用蓝色表示end;if ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) the n file://选中行用红色显示DbGrid1.Canvas.Brush.color:=clRed;DbGrid1.Canvas.pen.mode:=pmMask;DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);6.双向斑马线效果:即行间用不同色区分,同时,选中行以纵向斑马线效果区分不同的列。
file://其它属性设置同3,将上述代码修改为:Case Table1.RecNo mod 2 = 0 of file://根据数据集的记录号进行判断True : DbGrid1.Canvas.Brush.color:=clAqua; file://偶数行用浅绿色显示False: DbGrid1.Canvas.Brush.color:= clblue; file://奇数行用蓝色表示end;If ((State = [gdSelected]) or (State=[gdSelected,gdFocused])) the nCase DataCol mod 2 = 0 ofTrue : DbGrid1.Canvas.Brush.color:=clRed; file://当前选中行的偶数列用红色False: DbGrid1.Canvas.Brush.color:= clGreen; file://当前选中行的奇数列用绿色表示end;DbGrid1.Canvas.pen.mode:=pmMask;DbGrid1.DefaultDrawColumnCell (Rect, DataCol, Column, State);Delphi 中的颜色常量及效果图这个表的制作过程:第一步, 先从Delphi 的源文件中提取并替换出下面的文本文件: clBlack=$000000clMaroon=$000080clGreen=$008000clOlive=$008080clNavy=$800000clPurple=$800080clTeal=$808000clGray=$808080clSilver=$C0C0C0clRed=$0000FFclLime=$00FF00clYellow=$00FFFFclBlue=$FF0000clFuchsia=$FF00FFclAqua=$FFFF00clLtGray=$C0C0C0clDkGray=$808080clWhite=$FFFFFF clMoneyGreen=$C0DCC0 clSkyBlue=$F0CAA6clCream=$F0FBFFclMedGray=$A4A0A0 clWebSnow=$FAFAFF clWebFloralWhite=$F0FAFF clWebLavenderBlush=$F5F0FF clWebOldLace=$E6F5FD clWebIvory=$F0FFFF clWebCornSilk=$DCF8FF clWebBeige=$DCF5F5 clWebAntiqueWhite=$D7EBFA clWebWheat=$B3DEF5 clWebAliceBlue=$FFF8F0 clWebGhostWhite=$FFF8F8 clWebLavender=$FAE6E6 clWebSeashell=$EEF5FF clWebLightYellow=$E0FFFF clWebPapayaWhip=$D5EFFF clWebNavajoWhite=$ADDEFF clWebMoccasin=$B5E4FF clWebBurlywood=$87B8DE clWebAzure=$FFFFF0 clWebMintcream=$FAFFF5 clWebHoneydew=$F0FFF0 clWebLinen=$E6F0FAclWebLemonChiffon=$CDFAFF clWebBlanchedAlmond=$CDEBFF clWebBisque=$C4E4FF clWebPeachPuff=$B9DAFFclWebTan=$8CB4D2clWebYellow=$00FFFF clWebDarkOrange=$008CFF clWebRed=$0000FFclWebDarkRed=$00008B clWebMaroon=$000080 clWebIndianRed=$5C5CCD clWebSalmon=$7280FAclWebCoral=$507FFFclWebGold=$00D7FFclWebTomato=$4763FF clWebCrimson=$3C14DCclWebBrown=$2A2AA5 clWebChocolate=$1E69D2 clWebSandyBrown=$60A4F4 clWebLightSalmon=$7AA0FF clWebLightCoral=$8080F0 clWebOrange=$00A5FF clWebOrangeRed=$0045FF clWebFirebrick=$2222B2 clWebSaddleBrown=$13458B clWebSienna=$2D52A0clWebPeru=$3F85CD clWebDarkSalmon=$7A96E9 clWebRosyBrown=$8F8FBC clWebPaleGoldenrod=$AAE8EE clWebLightGoldenrodYellow=$D2FAFA clWebOlive=$008080 clWebForestGreen=$228B22 clWebGreenYellow=$2FFFADclWebChartreuse=$00FF7F clWebLightGreen=$90EE90 clWebAquamarine=$D4FF7F clWebSeaGreen=$578B2E clWebGoldenRod=$20A5DA clWebKhaki=$8CE6F0 clWebOliveDrab=$238E6B clWebGreen=$008000 clWebYellowGreen=$32CD9A clWebLawnGreen=$00FC7C clWebPaleGreen=$98FB98 clWebMediumAquamarine=$AACD66 clWebMediumSeaGreen=$71B33C clWebDarkGoldenRod=$0B86B8 clWebDarkKhaki=$6BB7BD clWebDarkOliveGreen=$2F6B55 clWebDarkgreen=$006400 clWebLimeGreen=$32CD32 clWebLime=$00FF00 clWebSpringGreen=$7FFF00 clWebMediumSpringGreen=$9AFA00 clWebDarkSeaGreen=$8FBC8F clWebLightSeaGreen=$AAB220 clWebPaleTurquoise=$EEEEAF clWebLightCyan=$FFFFE0 clWebLightBlue=$E6D8AD clWebLightSkyBlue=$FACE87 clWebCornFlowerBlue=$ED9564 clWebDarkBlue=$8B0000 clWebIndigo=$82004B clWebMediumTurquoise=$CCD148 clWebTurquoise=$D0E040 clWebCyan=$FFFF00clWebAqua=$FFFF00clWebPowderBlue=$E6E0B0 clWebSkyBlue=$EBCE87 clWebRoyalBlue=$E16941 clWebMediumBlue=$CD0000 clWebMidnightBlue=$701919 clWebDarkTurquoise=$D1CE00 clWebCadetBlue=$A09E5F clWebDarkCyan=$8B8B00 clWebTeal=$808000 clWebDeepskyBlue=$FFBF00 clWebDodgerBlue=$FF901E clWebBlue=$FF0000 clWebNavy=$800000 clWebDarkViolet=$D30094 clWebDarkOrchid=$CC3299 clWebMagenta=$FF00FF clWebFuchsia=$FF00FF clWebDarkMagenta=$8B008B clWebMediumVioletRed=$8515C7 clWebPaleVioletRed=$9370DB clWebBlueViolet=$E22B8A clWebMediumOrchid=$D355BA clWebMediumPurple=$DB7093 clWebPurple=$800080 clWebDeepPink=$9314FF clWebLightPink=$C1B6FF clWebViolet=$EE82EE clWebOrchid=$D670DA clWebPlum=$DDA0DD clWebThistle=$D8BFD8 clWebHotPink=$B469FF clWebPink=$CBC0FF clWebLightSteelBlue=$DEC4B0 clWebMediumSlateBlue=$EE687BclWebLightSlateGray=$998877 clWebWhite=$FFFFFF clWebLightgrey=$D3D3D3 clWebGray=$808080 clWebSteelBlue=$B48246 clWebSlateBlue=$CD5A6A clWebSlateGray=$908070 clWebWhiteSmoke=$F5F5F5 clWebSilver=$C0C0C0 clWebDimGray=$696969 clWebMistyRose=$E1E4FF clWebDarkSlateBlue=$8B3D48 clWebDarkSlategray=$4F4F2F clWebGainsboro=$DCDCDC clWebDarkGray=$A9A9A9 clWebBlack=$000000。