源碼共享11053pbpl5.3測(cè)試版pbpl5的改動(dòng)_第1頁(yè)
源碼共享11053pbpl5.3測(cè)試版pbpl5的改動(dòng)_第2頁(yè)
源碼共享11053pbpl5.3測(cè)試版pbpl5的改動(dòng)_第3頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、- 2003 年 4 月 5 日晚更新(DuSDong)-一、nvo_outlookdriver_navigate 控件的 of_show_buttons 事件中在 68 行為 IF mod(li_loop ,li_buttons_perline)=0 THEN ,當(dāng) li_buttons_perline = 0 時(shí),會(huì)出現(xiàn)錯(cuò)誤(我碰見(jiàn)過(guò)),因此加入下一行進(jìn)行判斷:if li_buttons_perline = 0 then exit二、nvo_rightsmanager 中函數(shù) of_getrights()第 3 行開(kāi)始改為:select run,ins,upd,del,prn,qry,hi

2、ddencols,filtersqlo :lus_rights.run,:lus_rights.add,:lus_rights.upd,:lus_rights.del,:lus_rights.prn,:lus_rights.qry,:lus_ri ghts.hiddencols,:lus_rights.filtersqlfrom smduser where sysid = :g_app.sysid and userid = :as_userid and progid= :as_progid usingsqlnew ;man_sdi_pattern 事件 ue_set_rights 第 11 行

3、為 ls_progid = left(this.title,7),使用窗口 title傳遞窗口的 progid 值。因此窗口的 Title 必須同該窗口的 name(如:w_dmm0010)相同,否則窗口打開(kāi)后無(wú)法取得用戶對(duì)該窗口的權(quán)利。改變?yōu)槭褂米兞縼?lái)傳遞,這樣窗口的 Title 可以隨便命名了。三、 nvo_appInstance Variables:string NewlyWindow nvo_app 事件ue_app_runprogram 第 9 行NewlyWindow = progid:man_sdi_pattern 事件 ue_set_rights 第 11 行l(wèi)s_progid

4、 = g_app.NewlyWindow改為:四、假如用戶無(wú)權(quán)打開(kāi)窗口的話, nvo_app 事件 ue_app_runprogram 中第 11 行執(zhí)行wanager.of_register_win(w_win,progid,w_witle)會(huì)出現(xiàn)錯(cuò)誤,在 11 行前:if not isvalid(w_win) then return五、nvo_rightsmanager 中函數(shù)當(dāng)使用 ref any 參數(shù)時(shí),有時(shí)會(huì)出現(xiàn)莫名的錯(cuò)誤,改為 return any 實(shí)現(xiàn): 函數(shù) of_getsubsys(string as_userid, string as_sysid, ref any as_s

5、ubsysids) return none改為 of_getsubsys(string as_userid, string as_sysid) return any函數(shù)關(guān)聯(lián)的: nvo_outlookdriver_navigate 中函數(shù) of_gen_invbuttons() 第 12 行改為:la_ret = g_rightsmanager.of_getsubsys(g_user.userid,as_subsysid) w_outlook_driver_win 中事件 ue_gen_navigate 第 17 行改為la_ret = g_rightsmanager.of_getsubsys

6、(g_user.userid,ls_subsysid2) w_tree_driver_win 中事件ue_gen_navigate 第 51 行改為la_ret = g_rightsmanager.of_getsubsys(g_user.userid,ls_subsysid2) 函數(shù) of_getsubprogram(string as_userid, string as_subsysid, ref any as_subsysids) return none改為 of_getsubprogram(string as_userid, string as_subsysid) return any函

7、數(shù)關(guān)聯(lián)的: nvo_outlookdriber_navigate 中函數(shù) of_gen_invbuttons() 第 26 行改為:la_ret = g_rightsmanager.of_getsubprogram(g_user.userid,as_subsysid) 函數(shù) of_get2lsubsys(string as_userid, string as_sysid, ref any as_subsysids) return none改為 of_get2lsubsys(string as_userid, string as_sysid) return any函數(shù)關(guān)聯(lián)的: w_outlook

8、_driver_win 中事件 ue_gen_navigate 第 8 行改為:la_ret = g_rightsmanager.of_get2lsubsys(g_user.userid,g_app.sysid) w_tree_drive_win 中事件 ue_gen_navigate 第 44 行改為:la_ret = g_rightsmanager.of_get2lsubsys(g_user.userid,g_app.sysid)六、讓 uo_toolbar 改變 uo_toolbar_button 的enabled 時(shí) toolbar 不閃爍在 uo_toolbar_button 中 o

9、f_enabled()事件中第 1 行if this.enabled = ab_enabled then return:七、uo_toolbar 增加函數(shù) of_getenabled,用于取得對(duì)應(yīng)的按鈕是否可用函數(shù):of_getenabled(eger ai_index) return如下:IF ai_index 0THENreturn iuo_buttonsai_index.enabledENDIFreturn false函數(shù):of_getenabled(am_) return如下:return am_.enabled八、(第十六項(xiàng)重新更正)uo_datawindow 控件 protectk

10、ey 只藍(lán)色顯示 key 的健。但是對(duì)于最終用戶而言,key 和其他不可編輯的列沒(méi)的藍(lán)色顯示。區(qū)別,都是不可編輯。因此,加入對(duì)不可編輯的列(即 tab order 的值為 0) 加入 of_istabzero(string st_column) returns/判斷某欄位的 TabSequence 是否為 0函數(shù),函數(shù)為:/st_column可以為ition 或 Namebl_istabzeroeger(st_column)0IFTHENbl_istabzero = this.Describe(# + st_column +.tabsequence) = 0 ELSEbl_istabzero

11、= this.Describe(string(st_column)+.tabsequence) = 0ENDIFRETURNbi_istabzero Instance Variables 加入變量:(設(shè)置為 false 不保護(hù),true 保護(hù)。)ib_protect_tabzero = false of_protect_key()函數(shù)第 23 行改為:IFof_iskey(string(in_columnindex)or(ib_protect_tabzeroandof_istabzero(string(in_columnindex) THEN九、編譯時(shí)錯(cuò)誤:Library: E:PBPL52m

12、on.pblObject: nvo_datetimeFunction: nvo_datetime:of_relativedatestring(0022): Error(0031): ErrorC0001: Illegal daype: ufc_n_converC0015: Undefined variable: lnv_conver將 nvo_daime:of_relativedatestring 第 22 行改為:nvo_Conver問(wèn)題解決。lnv_Conver十、將 uo_tutton 中 p_1 控件 File Name 屬性清空,否則編譯錯(cuò)誤。十一、將系統(tǒng)默認(rèn)字體以及 uo_xp_b

13、utton 的默認(rèn)字體設(shè)為“宋體 9 號(hào)字”。字體吧!大多數(shù)人都用這個(gè)十二、運(yùn)行程序時(shí)會(huì)提示 寫入用戶信息表失敗!/心耶提供eger 函數(shù)中第 27 行改為:將 w_logon_win 中wf_check(as_userid,as_pwd) returng_user.ipaddress = g_app.winapi.of_getip()- 2003 年 4 月 6 日更新(DuSDong)-十三、使用Alt+tab 鍵切換窗口時(shí) outlook 界面中的按鈕還是突起。(左右窗口都是如此)右邊 outlook 界面的修改將 nvo_outlookdriver_navigate_button 中

14、Declare Instance Variables 中ib_mousein 由 Protected 改為 Publicib_Captured 和在 nvo_outlookdriver_navigate 控件long ll_i,ll_countll_count = upperbound(iuo_buttons) for ll_i = 1 to ll_countif isvalid(iuo_buttonsll_i) then用戶事件 ue_deactivate(pbm 為空),寫入:iuo_buttonsll_i.of_drawbutton(Flat) iuo_buttonsll_i.ib_mo

15、usein = false iuo_buttonsll_i.ib_Captured = falseend if next左邊 outlook 界面的修改將uo_button 中Declare Shared Variables 中sh_ib_Captured 改為Instance Variables, ib_clicked 由 Protected 改為 Public:屬性為 Public。Declare Instance Variables 中 uo_panel 控件中 ue_deactivate 事件中寫入long ll_i,ll_countll_count = upperbound(butt

16、ons) for ll_i = 1 to ll_countif isvalid(buttonsll_i) then buttonsll_i.sh_ib_Captured = falsebuttonsll_i.ReleaseCapture()buttonsll_i.wf_buttonflat() buttonsll_i.ib_clicked =falseend ifnextuo_pb 控件中 ue_deactivate 事件中寫入long ll_i,ll_countll_count = upperbound(panels) for ll_i = 1 to ll_count:if isvalid(

17、panelsll_i) then panelsll_i.triggerevent(ue_deactivate)next應(yīng)用上面加入的事件。在 w_outlook_driver_win 窗口deactivate 事件中寫入uo_navigate.triggerevent(ue_deactivate) uo_outlook_driver.triggerevent(ue_deactivate):十四、outlook 界面左邊窗口有時(shí)點(diǎn)擊會(huì)失效,即:只有視覺(jué)效果,右邊窗口不刷新。初步為: uo_panel 控件中 ue_button_clicked 事件第 12 行 uo_parent.t Event

18、 ue_button_clicked(TheGroup.Grou,st_btnid)語(yǔ)句t 的太久了。改為:uo_parent.Event ue_button_clicked(TheGroup.Grou問(wèn)題暫時(shí)解決。,st_btnid) uo_panel 控件中 ue_header _clicked 事件第 9 行同上,改為:uo_parent.Event ue_header_clicked(TheGroup.Grou)十五、根據(jù) zhaoyongh:當(dāng)按下菜單或分割條的時(shí)候,都會(huì)觸發(fā) pbm_drawitem 事件,因此在 pbm_drawitem 的自定義事件 ue_drawitem 中的

19、如下代碼都會(huì)執(zhí)行:inv_Super.of_drawitem(childid,drawitemstruct)但 inv_Super.of_drawitem 這一函數(shù)完全是針對(duì)菜單的,所以當(dāng)分割條觸發(fā)這個(gè)事件執(zhí)行此函數(shù)時(shí),就錯(cuò)誤。似乎應(yīng)該在 of_drawitem函數(shù)中加上對(duì) childid 的判斷,或者在事件 ue_drawitem 中加上對(duì) childid 的判斷,只有當(dāng)菜單觸發(fā) ue_drawitem 事件時(shí),才執(zhí)行 inv_Super.of_drawitem(childid,drawitemstruct)這句代碼。我調(diào)試當(dāng)菜單觸發(fā) ue_draw這樣寫:item 時(shí),childid=0

20、,因此 ue_drawitem 事件我if childid=0 then inv_Super.of_drawitem(childid,drawitemstruct)程序執(zhí)行正常。對(duì)于如何判斷是否菜單觸發(fā) ue_drawitem 事件,我研究不深,上面的做法可能只是粗淺的做法。更好的做法似乎應(yīng)該是在用戶對(duì)象中判斷觸發(fā)事件的對(duì)象的類別。- 2003 年 4 月 12 日更新(DuSDong)-十六、根據(jù)建議,重新更正第八項(xiàng)的改進(jìn)將變量ib_protect_tabzero = false 定義為 Private 屬性,改為 Public 屬性,并更名為:ProtectTabZero,并改動(dòng)相應(yīng)的。十

21、七、uo_datawindow 中 ue_validate_key()函數(shù)中有一個(gè) bug:當(dāng) datawindow 中所有的 key 都不可見(jiàn)時(shí),會(huì)判斷出錯(cuò)。在 30 行:ift = 0 then return1十八、uo_datawindow 中 of_deleterow()函數(shù)第一行為:IF this.event ue_pre_deleterow(al_row) 1 THEN RETURN -1 。而假如 ue_pre_deleterow()事件中沒(méi)有寫入,就會(huì)返回-1,刪除失敗。參照 of_addrow()函數(shù)的寫法,改為:IF this.event ue_pre_deleterow(

22、al_row) = -1 THEN RETURN -1問(wèn)題解決。十九、uo_datawindow 當(dāng)數(shù)據(jù)窗口不是 ParentDW(即主窗口)時(shí),無(wú)法顯示當(dāng)前行。這在類似于 w_dmm0310 的 D Pattern 窗口(Grid 風(fēng)格)中很不方便。但在類似于w_dmm0300 之類的M Pattern 窗口(Freeform 風(fēng)格)中沒(méi)有問(wèn)題。于是,將rowfocuschanged 事件第一行改為:IFCurrentRow 0 時(shí),就是column 了。但是數(shù)據(jù)窗口中column 的順序號(hào)是第一次定義數(shù)據(jù)窗口選擇列時(shí)定下來(lái)的,當(dāng)人為的改動(dòng) column 的前后顯示順序時(shí),of_goto_c

23、ol()的取得只是你定義數(shù)據(jù)窗口時(shí)的第一列,而不是當(dāng)前的第一列。將 of_goto_col()修改為:egerli_columnindex,li_eger li_tab,li_mab = 0FORli_columnindex=1TO of_get_columncount()li_tab =eger(this.describe(#+string(li_columnindex)+.TabSequence)IFstring(this.describe(#+string(li_columnindex)+.visible)=1 AND & string(this.describe(#+string(li

24、_columnindex)+.protect)=0 AND li_tab0 THENif li_mab = 0 thenli_mab = li_tabli_= li_columnindexelseif li_mab li_tab thenli_mab = li_tabli_= li_columnindexend ifend ifEND IF NEXTthis.setcolumn(li_)二十二、uo_datawindow 中 of_addrow()增加成功返回 1。改為增加成功返回新增的行號(hào),這樣與系統(tǒng)自帶的函數(shù) insertrow()相一致。即最后一行改為:RETURNal_row二十三、新

25、增功能:加入下拉數(shù)據(jù)窗口(即Edit 風(fēng)格為 DropDownDatawindow)隨著鼠標(biāo)移動(dòng)顯示行。mand(mand)事件,并寫入實(shí)現(xiàn):if notificationcode 2311 then return DataWindowChild ldwc_ChildString ls_Poer,ls_column Long ll_Rowls_column = this.getcolumnname()if this.describe(ls_column + .edit.style) dddw then return if GetChild(ls_column, ldwc_Child) = -1

26、 then returnIF hwndchild = Handle( ldwc_child ) THEN/得到鼠標(biāo)所在行l(wèi)s_Poer = ldwc_Child.GetObjecPoer()ll_Row = Long(Mid(ls_Po/移到鼠標(biāo)所在行os(ls_Poer,t) + 1)IF ldwc_Child.GetRow() ll_Row AND ll_Row 0 THEN ldwc_Child.ScrollToRow( ll_Row )END IFEND IFman_sdi_d_pattern 中)二十四、新增功能:鎖定一行(用在實(shí)現(xiàn):在 uo_datawindow 的 Instanc

27、e Variables 增加一個(gè)變量:ib_lockrow = false/鎖定行在 uo_datawindow 的 rowfocuschanging 事件中寫入:if ib_lockrow then return 1新增一個(gè)函數(shù) of_lockrow(long al_row) returneger,寫入:if al_row this.rowcount() then return -1 if al_row = 0 thenib_lockrow = falseelseib_lockrow = false this.scrolltorow(al_row)thiectrow(0,false)thie

28、ctrow(al_row,true)this.setrow(al_row) ib_lockrow = trueend ifreturn 1二十五、w_dmm0300(M Pattern Exle)窗口和w_dmm0310(D Pattern Exle)窗口都繼承于w_sdi_m_pattern 模板。但 w_sdi_m_pattern 模板是專門為了 M Pattern 之類的窗口定制的,根本就無(wú)法應(yīng)用于 D Pattern 窗口。因此,參照 w_sdi_m_pattern 做了一個(gè) w_sdi_d_pattern 窗口。并將 w_dmm0310 繼承于w_sdi_d_pattern。二十六、加入 YTDaily的模板mon_sdi_m_pattern不過(guò)有點(diǎn)改動(dòng)的地方,ue_init_controls 事件中 47 行加入,這樣,就沒(méi)有礙眼的黑塊了。dw_disp.object.datawindow.selected.mouse = no二十七、uo_x

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論