EhLib使用说明(9)

2019-08-30 18:03

至此,我们就实现了想要的功能,其中PerForm是TControl的一个通用方法目的是绕过Windows本身的消息循环,而将消息直接发给要发的Control,其具体使用方法请参考Delphi的帮助。

2003-11-19 10:39:19 如何使DBGrid的指针不移动? 【问题】:我用DBGRID显示TABLE中的内容,现在我要从头到尾读一遍TABLE里的数据,用 Table1.First,Next来做会使DBGRID里面的指针也跟着跑,怎么才能使这时候DBGRID里面的指针不 动呢?

【答案】:使用如下代码即可:

with DataSet do try

DisableControls; Do_something; finally

EnableControls; end;

2003-11-19 10:42:14 如何动态更新DBGrid的颜色?(请同时参考“如何使DBGRID网格的颜色随此格中的数据值的变化而变化?”) DBGrid控件是一个有许多用户接口的显示数据库的控件,以下的程序告诉您如何根据显示的内容改变字体的显示颜色。例如,如果一个城市的人口大于200万,我们就让它显示为蓝色。使用的控件事件为DBGrid.OnDrawColumeCell.

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: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;

上面的例子是简单的,但是你可以根据自己的需要扩充,例如字体也变化等,甚至你可以调用画圆的函数在数字上画上一个红色的圆圈。

2003-11-19 10:45:14 使用DBGrid显示日期 在使用 DBGRID 控件时显示 DATATIME 时其年份是为2位的,但我们在步入2000年后需要显示的日期是4位,如:1998、2001。在数据库中该字段只有在2000年后才会显示4位,怎么办呢? 下面我们就让该字段在DBGRID

控件中也显示4位的日期格式: 双击 Table1 控件,就会出现 form1.table 窗体,击右键,选 Add Fields...,选择日期字段后按ok,窗体中就出现了数据库的日期字段名,点日期的那个字段名,属性框里就出现了该字段的信息,里面有一项 DispalyFormat,在该显示格式里输入 yyyy.mm.dd ,那么DBGRID控件就出现完整的日期了。

2003-11-19 10:48:37 在TDBGrid控件中实现拖放的另外一个思路(请同时参考在DBGrid上Drag & Drop(拖放)) 在本unit中,自定义TMyCustomDBGrid=class(TCustomDBGrid),再如下引用:

TMyCustomDBGrid(DBGrid1).MouseDown(...) 或

DBGrid1 as TMyCustomDBGrid).MouseDown(...)即可。

2003-11-19 10:56:11 在dbgrid表格中如何设置按回车键相当于单click?【例程】: 在窗体form1中放入table1,datasource1,dbgrid1,设好联连关系,使 dbgrid1 中能正确显示出table1的数据。然后:

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin

with DBGrid1 do if Key=#13 then

DBGrid1CellClick(Columns[SelectedIndex]); end;

procedure TForm1.DBGrid1CellClick(Column: TColumn); begin

with DBGrid1 do

showmessage(format('row=%d',[SelectedIndex])); end;

2003-11-19 11:07:55 Delphi 的 DBGrid 中的下拉列表和查找字段编程方法 数据网格是非常流行的数据输入和显示形式,像大家熟悉的Excel、VFP 中的功能强大的BROWS 等,为广大程序员乐于采用。在用 Delphi 开发数据库应用系统时,利用数据网格DBGrid 输入数据时,有些字段只允许某几个固定的字符串,像档案案卷的保管期限,只有“永久”、“长期”和“短期”三种,可否从一个下拉列表中进行选择,从而方便输入和避免输入错误呢?还有一些字段,例如职工信息库中的单位编号(在另外的单位库中保存着单位的详细信息),在输入和显示职工数据时,能否不对单位编号进行操作,而代之于更加直观的单位库中的单位名称呢?答案是肯定的,Delphi 的数据网格控件 DBGrid,支持下拉列表和查找字段的编程,而且,编程的过程都是可视化的,不需要写一行语句。

一、DBGrid 中的下拉列表

在 DBGrid 网格中实现下拉列表,设置好 DBGrid 中该字段的 PickList 字符串列表、初始的序号值 DropDownRows 即可。以职工信息库中的籍贯字段(字符串类型)为例,具体设计步骤如下:

1、在窗体上放置Table1、DataSource1、DBGrid1、DBNavigator1 等控件对象,按下表设置各个对象的属性:

--------------------------------------- 对象 属性 设定值

--------------------------------------- Table1 DataBase sy1

Table zgk.dbf //职工信息库 DataSource1 DataSet Table1

DbGrid1 DataSource DataSource1 DBNavigator1 DataSource Datasource1

-------------------------------------------

2、双击Table1, 在弹出的Form1.Table1 窗口中,用右键弹出快捷菜单,单击Add Fields 菜单项;选择所有的字段后,按OK 按钮。

3、修改第2 步新增字段的 DisplayLabel 属性。以 Table1ZGBH 字段为例,在 Object Inspector 窗口中选择 Table1ZGBH, 修改属性 DisplayLabel= 职工编号,其余字段类似。

4、双击 DBGrid1, 在弹出的 Editing DBGrid1.Columns 窗口中,单击 Add all Fields 按钮,增加Table1 的所有字段。

5、在 Editing DBGrid1.Columns 窗口,选择 jg 这一行,切换到 Object Inspector 窗口,修改它的 PickList.Strings 为“湖北枝江市(换行)北京市(换行)河南平顶山市(换行)浙江德清市”

6、在 Form1.Oncreate 事件中写入语句:

Table1.Open;

7、F9 运行,用鼠标点击某个记录的籍贯字段,右边即出现一个按钮,点击这个按钮,可出现一个下拉列表,包含第5 步中输入的四行字符串,可用鼠标进行选择。当然也可以自行输入一个并不属下拉列表中的字符串。

二、DBGrid 中的查找字段

所谓查找字段 (LookUp Field),即 DBGrid 中的某个关键字段的数值来源于另外一个数据库的相应字段。运用查找字段技术,不仅可以有效的避免输入错误,而且 DBGrid 的显示方式更为灵活,可以不显示关键字段,而显示源数据库中相对应的另外一个字段的数据。 ---- 例如,我们在 DBGrid 中显示和编辑职工信息,包括职工编号、职工姓名、籍贯、所在单位编号,而单位编号来源于另一个数据库表格——单位库,称“单位编号”为关键字段。如果我们直接显示和编辑单位编号的话,将会面对1、2、3 等非常不直观的数字,编辑时极易出错。但是如果显示和编辑的是单位库中对应的单位名称话,将非常直观。这就是DBGrid

的所支持的查找字段带来的好处。

实现DBGrid 的查找字段同样不需要任何语句,具体设计步骤如下:

1、在窗体上放置 Table1、Table2、DataSource1、DBGrid1、DBNavigator1 等控件对象,按下表设置各个对象的属性:

--------------------------------------- 对象 属性 设定值

--------------------------------------- Table1 DataBase sy1

Table zgk.dbf //职工信息库 Table2 DataBase sy1

Table dwk.dbf //单位信息库 DataSource1 DataSet Table1

DbGrid1 DataSource DataSource1 DBNavigator1 DataSource Datasource1

------------------------------------------ 2、双击 Table1, 在弹出的 Form1.Table1 窗口中,用右键弹出快捷菜单,单击 Add Fields 菜单项;选择所有的字段后,按OK 按钮。

3、修改第2 步新增字段的 DisplayLabel 属性。以 Table1ZGBH 字段为例,在 Object Inspector 窗口中选择 Table1ZGBH, 修改属性 DisplayLabel= 职工编号,其余字段类似。

4、设置 Table1DWBH.Visible=False。

5、在 Form1.Table1 窗口,用右键弹出快捷菜单,单击 New Field 菜单项,新增一个查找字段DWMC,在弹出的窗口设置相应的属性, 按 OK 按钮确认;在 Object Inspector 窗口,设置 Table1DWMC.DisplayLabel= 单位名称。

6、在 Form1.Oncreate 事件中写入语句:

Table1.Open;

7、按 F9 运行,当光标移至某个记录的单位名称字段时,用鼠标点击该字段,即出现一个下拉列表,点击右边的下箭头,可在下拉列表中进行选择。在这里可以看出,下拉列表的内容来自于单位信息库,并且不能输入其他内容。

三、DBGrid 中的下拉列表和查找字段的区别 虽然 DBGrid 中的下拉列表和查找字段,都是以下拉列表的形式出现的,但两者有很大的差别。

1、用 PickList 属性设置的下拉列表,它的数据是手工输入的,虽然也可以在程序中修改,但动态特性显然不如直接由另外数据库表格提取数据的查找字段。

2、用 PickList 属性设置的下拉列表,允许输入不属于下拉列表中的数据,但查找字段中

只能输入源数据库中关键字段中的数据,这样更能保证数据的完整性。

3、用 PickList 属性设置的下拉列表设计较为简单。

2003-11-19 11:23:29 Delphi中定制DBGrid控件在Delphi中,DBGrid控件是一个开发数据库软件不能不使用的控件,其功能非常强大,可以配合SQL语句实现几乎所有数据报表的显示,操作也非常简单,属性、过程、事件等都非常直观,但是使用中,有时侯还是需要一些其他功能,例如打印、斑马纹显示、将DBGrid中的数据转存到Excel97中等等。这就需要我们定制DBGrid,以更好的适应我们的实际需要定制DBGrid,实现了以上列举的功能,对于打印功能则是在DBGrid的基础上联合QuickReport的功能,直接进行DBGrid的打印及预览,用户感觉不到QuickReport的存在,只需调用方法WpaperPreview即可;对于转存数据到Excel也是一样,不过这里使用的是自动化变量Excel而已。由于程序太长,不能详细列举,这里介绍一个完整的实现斑马纹显示的DBGrid,名字是NewDBGrid。根据这个小程序,读者可以添加其他更好、更多、更实用的功能。

NewDBGrid的实现原理就是继承DBGrid的所有功能,同时添加新的属性: Wzebra,WfirstColor ,WsecondColor。

当Wzebra的值为True时,显示斑马纹效果,其显示的效果是单数行颜色为WfirstColor,双数行颜色为WsecondColor。具体的见下面程序清单:

unit NewDBGrid;

interface uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DB, Grids, DBGrids, Excel97; type

TDrawFieldCellEvent = procedure(Sender: TObject; Field: TField; var Color: TCOlor; var Font: TFont; Row: Longint) of object; //新的数据控件由 TDBGrid 继承而来 TNewDBGrid = class(TDBGrid)

private //私有变量

FWZebra: Boolean; //是否显示斑马颜色 FWFirstColor: TColor; //单数行颜色 FWSecondColor: TCOlor; //双数行颜色

FDrawFieldCellEvent: TDrawFieldCellEvent; procedure AutoInitialize; //自动初使化过程 procedure AutoDestroy;

function GetWFirstColor: TColor; //FirstColor 的读写函数及过程

procedure SetWFirstColor(Value: TColor);


EhLib使用说明(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013管理类联考数学真题分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: