调用ButtonClicked事件

时间:2012-10-10 07:18:43

标签: powerbuilder

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

在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 个答案:

答案 0 :(得分:4)

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

  1. 语法更容易(正如这个问题的存在所证明的那样)。
  2. 当您知道何时调用代码时,维护代码会更容易。对于在你赢得彩票后接替你的人。
  3. 今天所需的功能是相同的,但它迟早会分支。或者有人会尝试在祖先ButtonClicked中实现一些东西,认为它只会在点击按钮时触发。 (我知道。有些人就像那样疯狂。)然后你会得到一些意大利面条解决方案来跟踪这是否是一个非按钮点击的ButtonClick ....丑陋。然后,迟早会有人受伤。
  4. 有一次,我确信调用ButtonClicked似乎更容易。我打赌你已经在这个决定的边缘摇摇欲坠,并且带着一点点想象力,我希望你能将剧本拆分成更模块化的东西。从不后悔分手......

    祝你好运,

    特里。

答案 1 :(得分: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 )