自己定义这几个事件,在事件里边赋值:
OnCheckEOF
这个事件监视一个参数——EOF的布尔值。设置这个参数为True可停止导航。
OnFirst
事件处理必须指定首记录指针。
OnNext
事件处理必须指定下一记录的指针。
OnPrior
事件处理必须指定前一记录的指针。
在这种情况下的“指针”和“记录”只是字面不同。如果你用来自数组的数据进行工作,“记录”是数组的行,而“指针”是保存行标的变量。
导航方法用下面的方式进行调用:OnFirst,OnCheckEOF,OnNext,OnCheckEOF,OnNext,……,OnCheckEOF,OnNext。如果是分组报表,那么OnPrior方法在分组结束后调用。
如果你在构建报表前知道“记录”数,你可以使用RangeEnd和RangeEndCount属性。只须设置RangeEnd := reCount和RangeEndCount :=记录数(例如,数组的行数)。这时,你可以不需要OnCheckEOF事件处理。要找到当前记录位置,使用RecNo: Integer属性。在第一个位置RecNo = 0。
当生成过程中将一个不可改变的静态记录值赋值给一个记录时,可以使用一个frVariables,就象这样:
frVariables['Reporting Period'] := 'January';
frReport1.ShowReport;
必要的情况下使用控件的OnGetValue事件,它在所有验证之前调用:
当生成过程中将一个可改变的记录值赋值给一个记录时,你可以使用数据字典或TfrReport.OnGetValue事件处理,就象这样:
procedure TForm1.frReport1GetValue(const ParName: String;
var ParValue: Variant);
begin
if AnsiCompareText(ParName, 'Reported Period') = 0 then
ParValue := Table1OtchPeriod.Value;
end;