EhLib 用户指南 (其中一部分)

类别:编程语言 点击:0 评论:0 推荐:
 

EhLib  用户指南 (其中一部分)

翻译:[email protected]

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 ;

 

本文地址:http://com.8s8s.com/it/it29446.htm