【问题标题】:Is that possible to call window procedure from another window trigger section?是否可以从另一个窗口触发部分调用窗口过程?
【发布时间】:2019-04-09 20:50:52
【问题描述】:

我想从另一个窗口触发部分编写一个调用窗口过程的程序。让我分享我的程序我的尝试。

DO:
  DEFINE VARIABLE cPartType     AS CHARACTER NO-UNDO.
  DEFINE VARIABLE cSubPartType  AS CHARACTER NO-UNDO.
  DEFINE VARIABLE cAttributeExp AS CHARACTER NO-UNDO.
  DEFINE VARIABLE cOutputQty    AS CHARACTER NO-UNDO.
  DEFINE VARIABLE cOutputExp    AS CHARACTER NO-UNDO.
  DEFINE VARIABLE  cResult      AS CHARACTER NO-UNDO.
  DEFINE VARIABLE  cCheckCase   AS CHARACTER NO-UNDO.

  ASSIGN
  cPartType     = coCombo  :SCREEN-VALUE IN FRAME {&FRAME-NAME}  
  cSubPartType  = fiChar-2 :SCREEN-VALUE IN FRAME {&FRAME-NAME} 
  cAttributeExp = fiChar-3 :SCREEN-VALUE IN FRAME {&FRAME-NAME}
  cOutputQty    = fiChar-4 :SCREEN-VALUE IN FRAME {&FRAME-NAME} 
  cOutputExp    = fiChar-5 :SCREEN-VALUE IN FRAME {&FRAME-NAME}.

  { launch.i   &PLIP        = "'ford/prc/Parts.p'"  
                     &IProc       = "'AddPart'"
                     &PList       = "(INPUT cPartType,
                                      INPUT cSubPartType,
                                      INPUT cAttributeExp,
                                      INPUT cOutputQty,
                                      INPUT cOutputExp,
                                      OUTPUT cResult,
                                      OUTPUT cCheckCase)"
                     &AutoKill    =  YES
                     &OnApp       = 'YES'
                     &PARTITION   = 'ASS'                                                                                                   
   }

END.

在这里我可以从 plipp 文件中调用该过程,但我想从该触发器中调用另一个窗口过程。你能帮忙解决这个案子吗?

【问题讨论】:

    标签: openedge progress-4gl


    【解决方案1】:

    如果程序在同一个程序中,则只需

    RUN addPart  (INPUT cPartType,
                               INPUT cSubPartType,
                               INPUT cAttributeExp,
                               INPUT cOutputQty,
                               INPUT cOutputExp,
                               OUTPUT cResult,
                               OUTPUT cCheckCase).
    

    现在,如果该过程位于不同的程序中,您将需要一个句柄来运行它。在这种情况下,在定义中定义一个像这样的句柄变量

    DEFINE VARIABLE myHandle AS HANDLE NO-UNDO.
    

    并在主块中添加此代码

    RUN ford/prc/Parts.p PERSISTENT SET myHandle.
    

    最后,在触发器中,做一个

    RUN addPart IN myHandle (INPUT cPartType,
                               INPUT cSubPartType,
                               INPUT cAttributeExp,
                               INPUT cOutputQty,
                               INPUT cOutputExp,
                               OUTPUT cResult,
                               OUTPUT cCheckCase).
    

    【讨论】:

    • 实际上我想说的是考虑 test1.w 和 test2.w ...在 test2.w 中,有一个名为 Data 的过程。所以我的意思是我需要调用 test2.w 过程在 test1.w 中
    • 这正是我在使用句柄的第二个示例中所说的。为了让窗口相互了解,您需要有程序的句柄。
    • 如果窗口是独立启动的,请考虑使用 PUBLISH 和 SUBSCRIBE。当然,假设他们在同一个会话中。否则,您只能通过从外部文件转储或加载数据来做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多