CloneCursor 既可以用到SourceDataSet的记录,又不会触发SourceDataSet移动等事件,这样不仅提高了效率,而且可以减少对事件的考滤。TSmartSumList就是用这个原理来实现合计的。
1.函数说明CloneCursor(ASource: TADDataSet;AReset:Boolean;AKeepSettings:Boolean;);
ASource:要拷贝数据的原DataSet。
AReset和AKeepSettings是拷贝数据后,是否需要拷贝原来的数据源设置及属性,默认是False表示拷贝保留原来的设置及属性。如果是True则不保留。具体控制的设置及属性是以下几个:
Filter, Filtered, FilterOptions, OnFilterRecord and FilterChanges;
IndexName, IndexFieldNames;
MasterSource and MasterFields;
ReadOnly.
2.使用例子
var
ds1: TClientDataSet;
begin
ds1 := TClientDataSet.Create(nil);
try
ds1.CloneCursor(SourceDataSet, False);
ds1.First;
while not ds1.Eof do
begin
...
ds1.Next;
end;
finally
FreeAndNil(ds1);
end;
end;