如何理介下面一段代码中DODEFAULT(tnFRXRecno, toObjProperties)的语句?
DEFINE CLASS EffectsListener AS ReportListener PROCEDURE EvaluateContents(tnFRXRecno, toObjProperties)
LOCAL lcEffect,lnSession,lcExpression
lcEffect="*:EFFECTS FORECOLOR"
lnSession=SET("Datasession") &&保存当前数据工作期
SET DATASESSION TO This.FRXDataSession &&转到报表定义文件数据工作期
SELECT FRX &&选择报表定义文件工作区
GO tnFRXRecno &&根据记录号定位记录
IF ATC(lcEffect,FRX.User)>0 &&查找USER字段中是否包含“*:EFFECTS FORECOLOR”标记
lcExpression=STREXTRACT(FRX.User,lcEffect+'=',CHR(13),1,3) &&提取出IIF()函数语句
LOCAL lnColor,lnPenRed,lnPenGreen,lnPenBlue
SET DATASESSION TO lnSession &&返回报表数据工作期
SELECT Orders &&转换到Orders临时表来计算发货日期是否大于定货日期+10
lnColor=EVALUATE(lcExpression) &&根据表达式计算颜色值
IF VARTYPE(lnColor)='N'
*!* 根据颜色值重新分离为RGB颜色值
lnPenRed=BITAND(lnColor, 0x0000FF)
lnPenGreen=BITRSHIFT(BITAND(lnColor, 0x00FF00), 8)
lnPenBlue=BITRSHIFT(BITAND(lnColor, 0xFF0000), 16)
WITH toObjProperties
IF .PenRed<>lnPenRed OR .PenGreen<>lnPenGreen OR .PenBlue<>lnPenBlue
.PenRed=lnPenRed
.PenGreen=lnPenGreen
.PenBlue=lnPenBlue
.FontStyle=129 &&粗体(1)+删除线(128),见表12-17中的说明
.Reload=.T. &&通知ReportListener进行重绘
ENDIF
ENDWITH
ENDIF
ENDIF
SET DATASESSION TO lnSession
*!* 执行默认行为
DODEFAULT(tnFRXRecno, toObjProperties)&&&根据DODEFAULT()的作用是子类中调用父类的方法或事件。这里的子类是EffectsListener,它去调用父类ReportListener 中的方法《 PROCEDURE EvaluateContents(tnFRXRecno, toObjProperties)到 SET DATASESSION TO lnSession>>这一段语句(加粗的一段)?这样理介对不对?
ENDPROC
ENDDEFINE
[ 本帖最后由 sylknb 于 2013-1-24 09:08 编辑 ]