2013-04-24 20 views
0

我的函數有一個DataWindowChild類型的輸入參數adwc。有沒有可能以某種方式發現它的DataObject?沒有指向放置DWC的DataWindow的指針,所以我們不能要求字段的「dddw.name」。如何定義DataWindowChild的DataObject?

謝謝!

+0

嗨,你想獲得DatawindowChild的數據對象或父級的數據對象? – DARKinVADER 2013-04-24 16:36:34

回答

1

AFAIK,答案是否定的。你可以做一個adwc.Describe(「datawindow.syntax」)來獲得它的定義(或者任何Describe()來獲得各種屬性),或者,正如你所建議的那樣,你可以修改你的函數來處理父對象和列名稱來訪問dddw.name。

目的是什麼?也許如果我們知道最終的遊戲,我們可以提出更多有價值的建議。

祝你好運,

特里。

0

不應該編寫關心數據窗口對象名稱的代碼。有幾個原因。

  1. DataWindow是一個動態對象。 DataWindow控件爲數據對象報告的名稱是按名稱設置的最後一個。完全不同的DataWindow可以通過Create加載,名稱不會改變。
  2. 檢查DataWindow名稱的代碼很脆弱。假設您的代碼正在檢查dddw是否爲d_empd_manager。當有人制作新的經理dddw並將其命名爲d_manager_v2時,您的代碼可能會以意想不到的方式失敗。
  3. 您關心DataWindow名稱的代碼可能違反像One Responsibility這樣的設計原則。基於Ursego的評論

    爲了您的DataWindow/DataStore中你有uf_row_exists(ls_search_expr)

增加。您正在嘗試爲DataWindowChild編寫函數,但DataWindowChild不存在DataWindow控件,而不是DataWindow。如果您將uf_child_row_exists(ls_column, ls_search_expr)添加到您的DataWindow/DataStore中,您將擁有父級和子級。

+0

這是一個框架函數,它通過一個表達式在DWC中執行搜索(這裏 - http://forum.powerbuilder.us/viewtopic.php?f=4&t=83 - 你可以找到一個類似的函數,但對於DataWindow而言,不適用於DWC )。如果搜索在技術上失敗了,函數將拋出一個異常,顯示搜索表達式,並建議確保表達式中提到的所有字段出現在DataObject中(以簡化查找錯誤原因)。但是你寫的所有內容對於商業編碼都是正確的。 – Ursego 2013-04-29 19:52:04

+0

我已根據您的評論添加到我的答案中。 – 2013-04-29 22:08:38

相關問題