ImageVerifierCode 换一换
格式:DOCX , 页数:104 ,大小:65.73KB ,
资源ID:30702420      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30702420.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(dbgrid应用全书整理版.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

dbgrid应用全书整理版.docx

1、dbgrid应用全书整理版DBGrid应用全书目录前言 3一、格式化输出(日期型字段、布尔型 ) 3二、表格显示设置 41. 改变 DBGrid 的表头、网格、网格线的前景色和背景色 42. 按设置条件显示单元格或文字的颜色 51)纵向斑马线效果: 62)纵向斑马线,同时以红色突出显示当前单元格效果: 63)在数据网格中以红色突出显示当前选中的行: 74)行突显的斑马线效果: 75)横向斑马线, 同时以红色突显当前行效果: 76)双向斑马线效果:即行间用不同色区分,同时,选中行以纵向斑马线效果区分不同的列: 83. 如何使DBGRID网格的颜色随此格中的数据值的变化而变化 84. 如何动态更新

2、DBGrid的颜色 105. 随意控制DBGrid 每一行的颜色简易方法 106. 另外一种可以在在Delphi中随意控制DBGrid 每一行颜色的方法 117. 在DBGrid中根据数据的属性不同显示不同的颜色 12三、在Delphi的DBGrid中插入其他可视组件 13四、锁定DBGrid左边的列 15五、实现DBGrid的排序 151. 点击DBGrid的Title对查询结果排序 152. .给DBGrid加入排序功能 163. 双击DBGrid实现排序 20六、去掉DBGrid的自动添加功能 21七、DBGrid不支持鼠标的上下移动的解决代码 21八、DBGrid中移动焦点到指定的行和

3、列 22九、两个Grid的同步滚动 23十、如何在DBGrid中能支持多项记录的选择 25十一、使用 DBGrid 的复选项 29十二、在一个DBGrid中显示多数据库 30十三、在 DBGrid 中如何让回车变为光标右移动 30十四、在DBGrid上实现拖放 31十五、如何使DBGrid的指针不移动 34十六、使用DBGrid显示日期 34十七、在DBGrid表格中如何设置按回车键相当于单click 35十八、DBGrid 中的下拉列表和查找字段编程方法 35十九、在DBGrid控件中显示图形 37二十、如何侦测DBGrid目前的记录与栏位资讯 38二十一、用DBGrid制作edit录入时的

4、下拉提示框 38二十二、将 DBGrid 中的内容输出至 Excel 或 ClipBoard 41二十三、怎样获得DBGrid中的cell的坐标 43二十四、DBGrid多层表头设计 45二十五、 在 DBGrid 中实现 copy、paste 功能 46二十六、禁止在DBGrid中按delete删除记录 47二十七、给 DBGrid 添加搜索功能 47二十八、数据网格自动适应宽度 50二十九、移除DBGrid的垂直滚动条 51三十、解决DBGrid上下移动的另外一种办法 52三十一、DBGrid中下拉列表的两种设计方法 531. DBGrid 中 的 下 拉 列 表 532. DBGrid

5、中 的 查 找 字 段 543. DBGrid 中的下拉列表和查找字段的区别 55三十二、 用 DBGrid 或 DBGrideh 如何让所显示数据自动滚动 55三十三、DBGrid 对非布尔字段的栏中如何出现 CheckBox 选择输入 56三十四、DBGrid控件隐藏或显示标题栏 56三十五、点击一个单元格实现对该字段的编辑 57三十六、在DBGrid的左边现像EXCEL那样的自动编号 57三十七、如何将几个DBGRID里的内容导入同一个EXCEL表中 59三十八、把DBGrid输出到Excel表格(支持多Sheet) 61三十九、DBGrid控件的标题栏弹出菜单 63四十、在DELPHI

6、中利用API实现网格内组件的嵌入 63四十一、第三方组件DBGrigEH简介 66前言 本书中的内容非本人原创,而仅仅是对网上的“DBGrid应用全书”进行了整理,删除了其中重复的内容,对同内容进行了合并,并增加了目录,以方便读者阅读、查阅。一、格式化输出(日期型字段、布尔型 )1、在布尔字段中,常用的一种方法是用其来表示性别,但在显示给用户看时,最好又能显示成男、女,以方便用户。双击ADOquery,在弹出的窗体中生成静态字段,然后你点取这些静态字段,在OnGetText和OnSetText事件中做如下。(我一般习惯用男女,想像丰富一点,嘿)procedure TfrmData.TADOqu

7、ery1SEXGetText(Sender: TField; var Text: String; DisplayText: Boolean);beginif sender.Value=1 then Text := 男;if sender.Value=0 then Text := 女;end;procedure TfrmData.TADOquery1SEXSetText(Sender: TField; const Text: String);beginif Text = 男 then sender.value :=1;if Text = 女 then sender.value :=0;end;

8、2、数值型字段,有时我们喜欢用数值型来表示一些选值,例如:、小学生;、中学生、大学生;等等,那么同样可以参照上面布尔型的方法procedure TfrmData.TADOquery1studentTypeGetText(Sender: TField; var Text: String; DisplayText: Boolean);beginif sender.Value=0 then Text := 小学生;if sender.Value=1 then Text := 中学生;if sender.Value=2 then Text := 大学生; .end;procedure TfrmData

9、.TADOquery1studentTypeSetText(Sender: TField; const Text: String);beginif Text = 小学生 then sender.value :=0;if Text = 中学生 then sender.value :=1;if Text = 大学生 then sender.value :=2; .end; 二、表格显示设置1. 改变 DBGrid 的表头、网格、网格线的前景色和背景色在 Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一。但是 DBGrid 缺省的外观未免显得单调和缺乏创意。其实,我们完全可以

10、在我们的程序中通过编程来达到美化DBGrid 外观的目的。通过编程,我们可以改变 DBGrid 的表头、网格、网格线的前景色和背景色,以及相关的字体的大小和风格。 以下的示例程序演示了对 DBGrid 各属性的设置,使 Delphi 显示的表格就像网页中的表格一样漂亮美观。 示例程序的运行: 在 Form1 上放置 DBGrid1、Query1、DataSource1 三个数据库组件,设置相关的属性,使 DBGrid1 能显示表中的数据。然后,在 DBGrid1 的 onDrawColumnCell 事件中键入以下代码,然后运行程序,就可以看到神奇的结果了。本代码在 Windows98、Del

11、phi5.0 环境下调试通过。procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);var i :integer;begin if gdSelected in State then Exit;/定义表头的字体和背景颜色: for i :=0 to (Sender as TDBGrid).Columns.Count-1 do begin (Sender as TDBGrid).Col

12、umnsi.Title.Font.Name :=宋体; /字体 (Sender as TDBGrid).Columnsi.Title.Font.Size :=9; /字体大小 (Sender as TDBGrid).Columnsi.Title.Font.Color :=$000000ff; /字体颜色(红色) (Sender as TDBGrid).Columnsi.Title.Color :=$0000ff00; /背景色(绿色) end;/隔行改变网格背景色: if Query1.RecNo mod 2 = 0 then (Sender as TDBGrid).Canvas.Brush.

13、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); /画笔定位 Line

14、To(Rect.Right, Rect.Bottom); /画蓝色的横线 Pen.Color := $0000ff00; /定义画笔颜色(绿色) MoveTo(Rect.Right, Rect.Top); /画笔定位 LineTo(Rect.Right, Rect.Bottom); /画绿色的竖线 end;end; 2. 按设置条件显示单元格或文字的颜色 你可在 DBGrid 元件的 DrawDataCell 事件中依资料的条件性来改变格子或文字的颜色.如 :OnDrawDataCell(.)begin with TDBGrid(Sender) do begin if (条件) then Ca

15、nvas.TextOut(Rect.Left + 4 Rect.Top + 2要显示的文字如表格的资料);end; 而你会看到 DBGrid 的显示资料怎麽有重叠的情况那是因为原本DBGrid要显示的资料与 TextOut 所显示的资料重叠 解决方法 : 在 Query 元件所加入的栏位(在元件上按右键会有 Add Fields.的选单)在不要显示资料的栏位的 OnGetText 事件中有一参数设定为 False;procedure TForm1.Query1Detail1GetText(Sender: TField; var Text: string;DisplayText: Boolean

16、);begin / 决定在 DBGrid 得知表格资料时要不要显示所得到的资料False - 不显示 / 就可避免与 TextOut 的文字重叠了 DisplayText : = False;end;end; 如果用 Delphi 3 处理很简单.例如:对表中某字段当其数值小于0时为红字其他为黑字.在 DBGrid.OnDrawColumnCell(.) 中:begin if TableField.AsInteger 0 then DBGrid.Canvas.Font.Color := clRed else DBGrid.Canvas.Font.Color := clBlack; DBGrid

17、.DefaultDrawColumnCell(.);end;这样对 Field 指定的格式仍旧生效不必重写. 实战:Delphi数据网格色彩特效 Delphi中的数据网格控件(TDBGrid)对于显示和编辑数据库中大量的数据起着十分重要的作用;然而,在使用数据网格控件的同时,也往往因为表格中大量的数据不易区分,而令操作者眼花缭乱。如何提高网格控件的易用性,克服它的此项不足呢?本文从改变数据网格的色彩配置角度,提出了一种解决办法。 以下为数据网格控件的6种特殊效果的实现方法,至于数据网格控件与数据集如何连接的方法从略。1)纵向斑马线效果:实现网格的奇数列和偶数列分别以不同的颜色显示以区别相邻的数

18、据列。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 (RectDataColColumnState);2)纵向斑马线,同时以红色突出显示当前单元格效果:以突出显示当

19、前选中的字段。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=gdSelectedgdFocused) thenIf Not DBGrid1.SelectedRows.CurrentRowSelected thenDBGrid1.Canvas.Brush.Color:

20、=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) t

21、henDBGrid1.Canvas.Brush.color:=clRed; file:/当前行以红色显示,其它行使用背景的浅绿色DBGrid1.Canvas.pen.mode:=pmmask;DBGrid1.DefaultDrawColumnCell (RectDataColColumnState);4)行突显的斑马线效果:既突出当前行,又区分不同的列(字段)。file:/其它属性设置同3,将上述代码修改为:if (State = gdSelected) or (State=gdSelectedgdFocused) thenbeginCase DataCol Mod 2 = 0 ofTrue

22、: DBGrid1.Canvas.Brush.color:=clRed; file:/当前选中行的偶数列显示红色False: DBGrid1.Canvas.Brush.color:=clblue; file:/当前选中行的奇数列显示蓝色end;DBGrid1.Canvas.pen.mode:=pmmask;DBGrid1.DefaultDrawColumnCell (RectDataColColumnState);end;5)横向斑马线, 同时以红色突显当前行效果:file:/其它属性设置同3,将上述代码修改为:Case Table1.RecNo mod 2 = 0 of file:/根据数据

23、集的记录号进行判断True : DBGrid1.Canvas.Brush.color:=clAqua; file:/偶数行用浅绿色显示False: DBGrid1.Canvas.Brush.color:=clblue; file:/奇数行用蓝色表示end;if (State = gdSelected) or (State=gdSelectedgdFocused) then file:/选中行用红色显示DBGrid1.Canvas.Brush.color:=clRed;DBGrid1.Canvas.pen.mode:=pmMask;DBGrid1.DefaultDrawColumnCell (R

24、ectDataColColumnState);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=gdSelect

25、edgdFocused) thenCase 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 (RectDataColColumnState); 上述6种方法分别就数据网格控件的列和行的色彩进行了设置,读者可以根据自己的需要设置

26、特效。该程序在Delphi5中测试通过。 3. 如何使DBGRID网格的颜色随此格中的数据值的变化而变化 在做界面的时候,有时候为了突出显示数据的各个特性(如过大或者过小等),需要通过改变字体或者颜色,本文就是针对这个情况进行的说明。 如何使DBGRID网格的颜色随此格中的数据值的变化而变化。如60的网格为红色? Delphi中数据控制构件DBGrid是用来反映数据表的最重要、也是最常用的构件。在应用程序中,如果以彩色的方式来显示DBGrid,将会增加其可视性,尤其在显示一些重要的或者是需要警示的数据时,可以改变这些数据所在的行或列的前景和背景的颜色。DBGrid属性DefaultDrawin

27、g是用来控制Cell(网格)的绘制。若DefaultDrawing的缺省设置为True,意思是Delphi使用DBGrid的缺省绘制方法来制作网格和其中所包含的数据,数据是按与特定列相连接的Tfield构件的DisplayFormat或EditFormat特性来绘制的;若将DBGrid的DefaultDrawing特性设置成False,Delphi就不绘制网格或其内容,必须自行在TDBGrid的OnDrawDataCell事件中提供自己的绘制例程(自画功能)。在这里将用到DBGrid的一个重要属性:画布Canvas,很多构件都有这一属性。Canvas代表了当前被显示DBGrid的表面,你如果把

28、另行定义的显示内容和风格指定给DBGrid对象的Canvas,DBGrid对象会把Canvas属性值在屏幕上显示出来。具体应用时,涉及到Canvas的Brush属性和FillRect方法及TextOut方法。Brush属性规定了DBGrid.Canvas显示的图像、颜色、风格以及访问Windows GDI 对象句柄,FillRect方法使用当前Brush属性填充矩形区域,方法TextOut输出Canvas的文本内容。以下用一个例子来详细地说明如何显示彩色的DBGrid。在例子中首先要有一个DBGrid构件,其次有一个用来产生彩色筛选条件的SpinEdit构件,另外还有ColorGrid构件供自

29、由选择数据单元的前景和背景的颜色。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: go1612.为D

30、BGrid1构件OnDrawDataCell事件编写响应程序:/这里编写的程序是60的网格为红色的情况,其他的可以照此类推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 else DBGrid1.Canvas.Brush.Color:=ColorGrid1.BackGroundColor; DBGrid1.Canvas.FillRect(Rect); DBGrid1.Canvas.TextOut(Rect.left2,Rect.top2,Field.AsString);end;这个过程的作用是当SpinEdit1给定的条件得以满足时,如salary变量低于或等于SpinEdit1.Value时,DBGrid1记录以ColorGrid1的前景颜色来显示,否则以ColorGr

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1