EhLib 的函数集可以从 Text以及其内部格式的数据导入到DBGridEh的数据集中。它可以从文件中读取数据或读取数据到流(TStream对象)。
其它特性
用lookup 编辑器,你可以在运行时清空(设置为Null) LookupKeyField 值。比如选择整个文本然后按Delete键。
冷区
冷区是数据网格列集左边显示的不可滚动的区域。与固定列不同的是,冷区的列可以获得编辑焦点。可以通过设置FrozenCols属性来设置右边不可滚动的列集。
增量搜索
TDBGridEh 允许用户在网格列中实现特定的“增量”搜索。当用户进入增量搜索时他可以显示字符以及网格,并且在当前的列中查找文本。使用 dghIncSearch 和 dghPreferIncSearch的值(在OptionsEh 选项中) 在数据网格中操作增量搜索。 dghIncSearch 值允许在数据网格中进行增量搜索。运行时你能够使用下面的键进行增量搜索:
Ctrl+F - 开始增量搜索。
Ctrl+Enter - 查找下一个匹配记录。
Ctrl+Shift+Enter - 查找前一个匹配记录。
如果OptionsEh选项中的 dghIncSearch 是只读的,那么网络将自动设置增量模式在第一次按键以及1.5秒后返回普通模式。 dghPreferIncSearch 值决定网格设置自动增量搜索模式在第一次按键时替代单元编辑。
水平或垂直滚动条
使用 VertSctollbar, HorzSctollbar 属性来显示/隐藏以及跟踪水平或垂直滚动条。
多选
TDBGridEh 允许在选定的区域上进行选择记录,列以及矩形区域等操作:
允许多选会影响下面这些属性:
Options选项中的dgMultiSelect属性 - 设置是否允许多选。
Options选项中的dghClearSelection 属性- 设置在用户移到下一个单元时是否清除已选记录。
Options选项中的EditActions属性 -设置用户可以在已选记录上执行哪些操作(比如,拷贝,剪切,删除,粘贴,全选等)。
Options选项中的AllowedSelections属性-设置允许选定记录的类型(比如,行,列,矩形区域等)。
Options选项中的Selection属性-设置一个当前的多选状态,已选记录,列或矩形区域以及存取它们的属性和函数。
从注册表或ini文件中保存或恢复网格和列的层次。
TDBGridEh 有一个常规设置来从注册表或ini文件中保存和恢复网络以及列的层次:
RestoreColumnsLayout - 从注册表中恢复列的次序,宽度,排序标志。
RestoreColumnsLayoutIni - 从ini文件中恢复列的次序,宽度,排序标志。
RestoreGridLayout - 从注册表中恢复列的次序,宽度,可视,排序标志,排序索引或行高。
RestoreGridLayoutIni - 从ini文件中恢复列的次序,宽度,可视,排序标志,排序索引或行高。
SaveColumnsLayout - 保存列的次序,宽度,排序标志到注册表中。
SaveColumnsLayoutIni - 保存列的次序,宽度,排序标志到ini文件中。
SaveGridLayout - 保存列的次序,宽度,可视,排序标志,排序索引或行高到注册表中。
SaveGridLayoutIni - 保存列的次序,宽度,可视,排序标志,排序索引或行高到ini文件中。
当前版本的TDBGridEh不支持的特性: 这个版本的TDBGridEh不支持下面的特性:
TDBGridEh 不能设置每一个数据窗口中单独行的行高。
TDBGridEh 不能象TreeView那样工作。它不能拥有节点和枝叶。
TDBGridEh 不能横向或纵向合并数据单元。
将已存在的TDBGrid组件转换为TDBGridEh组件:
尽管TDBGridEh并不是从TCustomDBGrid组件继承而来的,但是在TDBGridEh和TDBGrid中还是有一些相似的属性。
它允许仅用一点点代价来转换已存在的TDBGrid组件到TDBGridEh。
可以按照下面的提示来转转换已存在的TDBGrid组件到TDBGridEh:
在Delphi的IDE中打开包含有TDBGrid组件的应用程序。
设置视图方式为文本方式(Alt-F12)。
将所有的TDBGrid对象改名为TDBGridEh('比如,将object DBGrid1: TDBGrid'改为 'object DBGrid1: TDBGridEh')
重新编译你的应用程序。
5 使用 TDBSumList 组件 TDBSumList说明
你可以使用TDBSumList在可视动态变化数据集中进行记录统计。在你想查看的数据集中设置相关的数据字段,然后写 SumListChanged 事件来指定在TDBSumList发生改变后所要做的操作。TDBSumList 的 SumCollection 属性上一个 TDBSum 对象容器。每个 TDBSum 对象是一个可以指定集合值的元件。 FieldName 和 GroupOperation 决定了集合值的类型,SumValue 控制当前的集合值。
TDBSumList 被埋藏于 DBGridEh 组件中,因此所的下面有关TDBGridEh.SumList 的说明与TDBGirdEh的TDBGridEh.SumList 属性的说明是一样的。
如何工作以及为什么有时SumList的集合值计算不正确?
你知道 data-aware 控件与数据集是通过 TDataLink 对象相连接的。 TDataLink 不允许快速重新计算集合值。例如,当从数据集中删除记录时,数据集发送deDataSetChange事件给所有的TDataLink对象,在当前局部过滤发生改变时,同样的事件也被发送了。因此当 TDataLink 接收到该事件时,它不得不在所有的数据集中重新计算集合值,甚至于仅从数据集中删除一条记录。在激活后, TDBSumList 重载了数据集的下列事件: OnAfterEdit, OnAfterInsert, OnAfterOpen, OnAfterPost, OnAfterScroll, OnBeforeDelete, OnAfterClose。这种方法避免了在所有的数据集中它。在不需要它时,又会出现其它的问题,比如: T
运行时指定这些事件。在指定上述事件之一以前,关闭 SumList。
在下面的情形下,SumList 发出存取错误信息。 SumList 试着向数据集返回事件,但数据集数据并未被删除。在SumList(或网格)以及数据集放置在不同的窗体(数据模块)这种情况下,可以显示数据。在这种情况下,试着在从数据集或数据模块中数据集数据被删除时关闭SumList。
如果你使用SetRange或ApplyRange事件,SumList 将不能跟踪数据集中发生的变化。但可以调用 SumList.RecalAll 方法。 在非BDE数据集的主/明细表中,SumList 不能跟踪数据变化。在主数据集激活状态数据集发生变化后,调用 SumList.RecalAll 方法。
在任何其它情况下,如果你发现了其它SumList的计算值不正确,你都可以调用 RecalAll方法。
4 使用 TPrintDBGridEh 组件
在 Delphi 的 IDE 组件面板中选择 TPrintDBGridEh 并拖放其到 form 上。在 其 DBGridEh
属性中设置为相应的 TDBGridEh 组件。使用 Print 以及 Preview 方法在打印机上打印网格或者在预览窗体中预览网格。 网格前以网格后的 RTF 文本
TPrintDBGridEh 允许在打印 / 打印预览网格前或网格后的 RTF 文本。使用 AfterGridText 以及 BeforeGridText 属性来指定文本。 你可以在打印 / 打印预览时通过 BeforeGridText 和 AfterGridText 属性来替换文本内容。 当前版本的 TPrintDBGridEh 不支持的特性。 这个版本不支持下面的特性:
TPrintDBGridEh 不能在一页中打印 / 打印预览多个网格。 问答列表 :
问 : 怎样进行横向打印 / 打印预览?
答 : TPrintDBGridEh 并没有专六的属性来设置页面特性。在调用打印或打印预览方法前,你必须设置你将要执行打印的打印源( Orientation )。 uses ......, PrViewEh, Printers. ..............
procedure TForm1.bPreviewClick(Sender: TObject); begin
PrinterPreview.Orientation := poLandscape; PrintDBGridEh1.Preview; end ;
二、应用实例
Enlib3.0组件包安装成功后 A、定制标题行
1、制作复杂标题行
标题行可设为2行以上高度,并可以为多列创建一个共同的父标题行。为实现这个效果,需在各个列标题属性中以“|”分隔父标题和子标题,如办公用品包括代码和名称两部分,具体属性设置如下:
usemultititile=true; titlelines=2
DBGridEh.Columns[0].Title.Caption := '办公用品|代码'; DBGridEh.Columns[1].Title.Caption := '办公用品|名称';
2、标题行显示图片
实现图2中的购买人标题行显示效果。首先添加一个imagelist组件img1并在其中添加一组bmp,ico格式的图片。然后将DBGridEh的TitleImages设置为img1.最后在需要显示图片的列标题的imageindex中设置需要显示的img1中图片的序号。按F9执行一下程序,是不是很酷!
3、自动显示标题行的升降排序标志符(▽降序△升序)并做相应排序
DBGridEh组件可以在标题行单元格中显示小三角形升、降排序标志符图片,在运行时可点击标题行,图片自动切换并做相应排序。具体属性设置如下:
OptionsEh=dghAutoSortMarking Column.Title.TitleButton=true
SortMarkedColumns 为当前排序列可在运行时使用. 然后在该列的ontitleclick事件中添加代码:
procedure TForm_Query.DBGridEh1TitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh); var
sortstring:string; //排序列 begin
//进行排序 with Column do begin
if FieldName = '' then Exit;
case Title.SortMarker of smNoneEh: begin
Title.SortMarker := smDownEh;
sortstring := Column.FieldName + ' ASC'; end;
smDownEh: sortstring := Column.FieldName + ' ASC'; smUpEh: sortstring := Column.FieldName + ' DESC'; end; //进行排序 try
dataset.Sort := sortstring //dataset为实际数据集变量名 except end; end; end;
切记lookup型字段不可做上述设置,否则系统会提示错误。
B、定制表格底部(footer)区域的汇总统计行
DBGridEh 组件可以在表格底部显示汇总行,如记录数合计、列字段累加和等信息。在FooterRowCount中设置底部显示的行数;然后在Footers 编辑器中添加一个或多个显示列,显示列可以是字段值累加和、记录数合计、字段值或静态文件等集合类型,可以在设计时在ValueType属性中设置,也可在运行时通过设置Footers[i].ValueType指定其类型。其含义见下表:
切记设置DBGridEh.SumList.Active 为 True,才会进行汇总统计运算。需注意的是,