2

buttonclicked我在数据窗口的事件下有一个脚本。我的问题是如何从其他事件(如父窗口post_open事件)调用特定按钮。

在 Windowspost_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
4

2 回答 2

4

已经给出了对所提问题的正确答案,但我将提出一个相反的观点:你应该(实际上)永远不要做你所要求的。当您在需要从另一个系统事件调用的系统事件中实现功能时,您可能应该将该功能分解为单独的自定义用户事件(或函数)并从两个位置调用它。为什么?

  1. 语法更容易(正如这个问题的存在所证明的那样)。
  2. 当您知道何时调用代码时,维护代码会更容易。以及在你中了彩票后接替你的人。
  3. 今天所需的功能是相同的,但它迟早会分支。或者有人会尝试在祖先 ButtonClicked 中实现某些东西,认为它只会在单击按钮时触发。(我知道。有些人就是那样疯狂。)然后你会得到一些意大利面条解决方案来跟踪这是否是非按钮单击的 ButtonClick.... 丑陋。然后,迟早会有人受伤。

在某一时刻,我确信调用 ButtonClicked 似乎更容易。我敢打赌你已经在那个决定的边缘摇摇欲坠,有了一点想象力,我希望你能把脚本分成更模块化的东西。从来没有后悔把东西拆开...

祝你好运,

特里。

于 2012-10-10T17:27:27.353 回答
2

函数的错误参数列表:buttonclicked

该消息告诉您,您没有将正确的类型和/或数量的参数传递给函数(或事件)。

如果您想自己调用它,该ButtonClicked事件需要 3 个必须模拟的参数:

  • row调用按钮的行号
  • ReturnCode由按钮执行的操作返回的长值
  • dwo一个数据窗口对象。它是对鼠标指针“单击”的控件的引用,您可以传递dw.object.name_of_your_button

您可以尝试以下方法:

long ll_arc
dw_Command.event buttonclicked( dw_Command.getrow(), ll_arc, dw_Command.object.b_read )
于 2012-10-10T08:20:57.620 回答