Delphi中妙用TColunmnEh的OnGetCellParams事件

 

GetCellParams是TColunmnEh重要的事件之一,用好了这个事件,可以达到妙笔生花的境界。

1、与数据集的UpdateStatus搭配,派生出一列的行状态标记,一目了然,非常适用缓存提交方式。

procedure TWinEhlibInfo.SetRecordStatus( DataSet:TDataSet; EditMode: Boolean; Params: TColCellParamsEh); begin EditMode := False; if (DataSet<>nil) and (DataSet.Active) then begin case DataSet.UpdateStatus of usInserted:Params.text := '+'; usModified:Params.text := 'I'; usDeleted:Params.text := '-';//保留删除的标记,比如在恢复 CDS.delta,或者过滤数据集状态, //我们可以看到删除的状态行 else Params.Text := '*'; end; end; end;

 

调用方法:ClientDataSet1为ehlib表格对应的数据集。

手工创建一列(TColunmnEh),放在最后,宽度Width 为36即可,“列”属性的AutoFitColwidth为false,“列”不要指定数据集字段,然后在TColunmnEh的OnGetCellParams事件写上:

WinEhlibInfo.SetRecordStatus(ClientDataSet1,EditMode,Params);

见图:

2、与数据集的Lookup方法搭配。

在该事件里,可以填充一列或多列Lookup关联的表。

(1)优点是:不用在设计期或运行期创建Lookup字段,不用建立PickList和KeyList。

                       如果是一个复杂的窗口,已经有了Lookup对应的数据集,那我们不在需要重新建立新的

                       Lookup数据集。其原因是:Lookup搜索字符串不像locate一样移动数据集有效,因此可以共

                       享一个数据集。不用担心速度,因为Ehlib表格搜索的lookup匹配值,只是表格里能显示的记

                       录数,而不是所有的记录数。

(2)缺点是:由于是派生的列,没有指定字段名,因此不能排序和统计。

你可能感兴趣的:(Delphi,dataset)