2013-07-08 19 views

回答

1

有幾件事情從你的問題中跳出來。

SUPER::EVENT OPEN()會嘗試調用數據窗口的Open事件如果從ItemChanged調用,而不是窗口

我不知道這個100%,但我敢肯定,我碰到試圖從一個完全不同的腳本中調用一個腳本的祖先問題。我不能指出文件;我不得不把它記錄下來,直到有經驗的懷疑。如果你想打開窗口(我會在下面另行說明),並且如果窗口的Open腳本要麼擴展了祖先腳本,要麼顯式調用祖先腳本(如上所述),明確地調用祖先腳本是不必要的,並且使我感到不可取。只需調用您正在編寫的窗口的Open腳本即可。

這將完全取決於您的代碼,但我必須維護的幾十個系統,我會從來沒有假設運行窗口的Open事件將「重新啓動」窗口。我工作的大多數系統都會創建一個意想不到的新舊狀態組合。此外,即使我這個編碼從頭開始以這種方式很好地工作,我認爲這走過來保持我的代碼(後我贏了彩票和退休的一個小南太平洋島國)的下一個男人會在代碼基於他所從事的其他系統,這對他來說是完全有意義的,但會導致我的假設失效。如果我需要「重啓」的窗口,我要麼:

  • 關閉該窗口,併發佈一個開放式()(該功能,而不是事件)窗口再次
  • 創建ue_ResetWindow事件,希望編碼,以便公開可以使用它,這使得很明顯,任何添加到窗口中的任何東西都需要在這個腳本中保留以及

(這兩個,後者將是更好的用戶經驗和編碼,恕我直言。)

祝你好運,

特里。

+1

通常從代碼中調用內置事件是一個糟糕的主意,除了使用SUPER ::關鍵字來調用祖先腳本之外。即使這是可疑的,因爲它可能會繞過框架代碼。我標記每個事件腳本,我發現它覆蓋了頂層的'// OVERRIDES ANCESTOR'的祖先。代碼調用例如'cb_1.clicked'這裏沒有通過同行評議。 –

+0

休使得一個好點,這通常是我的愛好,一匹馬,但我忽略了這一次。今天,您可能會認爲您需要調用Open事件中的所有邏輯,但下個月,其他人將需要在一種情況下或另一種情況下專門調用某些東西,工作人員會跳過箍環(例如設置標誌)以將代碼保留在那裏。現在把它分開,從兩個地方給它打電話,長期保存自己。 – Terry