2012-10-10 97 views
2

我在數據窗口的buttonclicked事件下面有一個腳本。我的問題是,我將如何從父窗口post_open事件調用其他事件的特定按鈕。調用ButtonClicked事件

在windows post_open事件中,我有劇本,但是當我編譯返回Bad Argument List For Function: buttonclicked消息。我怎樣才能糾正這個編譯錯誤?

dw_Command.Event buttonclicked('b_read') 


DWO: Datawindow 
Event: buttonclicked 

CHOOSE CASE Lower(dwo.Name) 

CASE 'b_read'  

     SetPointer(Hourglass!) 
     idt_ServerDate = gnv_app.of_getServerDate() 
     of_getInventoryAdvice() 

CASE 'b_exit'  
     MessageBox('','Close') 
     Close(Parent) 

END CHOOSE 

回答

2

參數列表錯誤功能:buttonclicked

這消息告訴你,你是不是傳遞正確的參數類型和/或數量的函數(或事件)。

ButtonClicked事件期待3個參數,如果你想自己叫的話,你必須模擬:

  • row當按鈕被稱爲
  • ReturnCode由返回長值的行數由按鈕執行的動作
  • dwo datawindow對象。這是AA參考,是由鼠標指針「點擊」控制,你可以通過一個dw.object.name_of_your_button

你可以嘗試用下面的:

long ll_arc 
dw_Command.event buttonclicked(dw_Command.getrow(), ll_arc, dw_Command.object.b_read) 
+0

嗨關,我已經嘗試過你提供的腳本,它的工作正常。謝謝。 – Alex

+0

@Alex:不客氣:)如果它回答了您的問題,請考慮[接受答案](http://meta.stackexchange.com/a/65088/173356) – Seki

4

正確答案被問到的問題有但我會提出一個逆向的觀點:你應該(幾乎)不要做你所要求的。當系統事件需要從另一個系統事件中調用時實現功能時,您應該將該功能分解爲單獨的自定義用戶事件(或函數)並從兩個地方調用它。爲什麼?

  1. 語法比較容易(正如這個問題的存在所證明的那樣)。
  2. 當你知道什麼時候會被調用時,維護代碼會更容易。對於在你贏彩票後接管你的人。
  3. 今天所需的功能是相同的,但它遲早會分支。或者有人會嘗試在祖先ButtonClicked中實現一些東西,認爲只有點擊了按鈕纔會觸發它。 (我知道,有些人就是這樣瘋狂)然後你會得到一些意大利麪條解決方案來跟蹤這是否是一個非按鈕點擊ButtonClick ....醜陋。那麼,遲早會有人受傷。

有一次,我確信調用ButtonClicked似乎更容易。我敢打賭,你已經在這個決定的邊緣搖搖欲墜,並且有一點想象力,我希望你能將腳本分成更加模塊化的東西。從來沒有後悔過什麼破...除了

祝你好運,

特里。

+0

重點關注代碼可維護性和可能的​​代碼在未來的修改過程中出現變態 – Seki

+0

@Seki ...並避免回答我的肥皂箱中的問題。 * grin * – Terry

+0

@ Teri,只是爲了與您分享這個項目,它是一個在兩個系統之間進行電子數據交換的應用程序。並且此應用程序將獨立運行,意味着根本沒有用戶干預。感謝您的共同觀點,並且有待考慮。即時通訊思想把程序變成一個功能,而我仍然在分析的進度... – Alex