VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

请教下面一段代码中DODEFAULT(tnFRXRecno, toObjProperties)的作用?

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
480615



註冊時間: 2008-04-11
文章: 93


第 1 樓

發表發表於: 星期四 一月 24, 2013 1:36 pm    文章主題: 请教下面一段代码中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), Cool
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
回頂端
檢視會員個人資料 發送私人訊息
aizz



註冊時間: 2007-01-29
文章: 171


第 2 樓

發表發表於: 星期五 一月 25, 2013 9:41 am    文章主題: 引言回覆



最簡單易懂的 foxpro , 居然可以被寫得這麼艱澀難讀......

猴腮雷呀

Twisted Evil Evil or Very Mad Mad
回頂端
檢視會員個人資料 發送私人訊息
elleryq



註冊時間: 2007-06-21
文章: 768


第 3 樓

發表發表於: 星期五 一月 25, 2013 3:41 pm    文章主題: 引言回覆

應該不是這個說

dodefault() 的意思應該是

define class a
procedure do()
&& show something.
endproc
enddefine

define class a_child as a
procedure do()
dodefault()
endproc
enddefine

dodefault() 就只是執行父類別 do 裡的代碼。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
480615



註冊時間: 2008-04-11
文章: 93


第 4 樓

發表發表於: 星期二 一月 29, 2013 11:26 am    文章主題: 引言回覆

我的意思是在上面的代码中dodefault() 去執行哪一个父類別?
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作