0

希望这将是我一段时间内的最后一个问题。我知道关于 Progress 的 UI 功能没什么好说的,但是在框架中显示似乎是一个非常奇怪的问题。

这里有一些伪代码可以帮助你理解问题:

DEF TEMP-TABLE tMainTable.
DEF TEMP-TABLE tPage LIKE tMainTable.
DEF VAR iCursor AS INT.

/* SOME INPUT DETECTION */
/*  Moving the cursor   */

FIND FIRST tMainTable WHERE tMainTable.UniqueId EQ iCursor.
DO i = 1 TO iMaxPageSize:
    CREATE tPage.
    BUFFER-COPY tMainTable TO tPage.
END.

/* DISPLAY */
FOR EACH tPage:
    DISPLAY tPage.iNumber tPage.Name.
END.

这些是程序的基础。现在所需的输出将让显示这些的 FRAME 在最后一个条目的正下方结束。目前,使用默认的 FRAME,它会缩放到终端屏幕的底部。

虽然,当我实例化一个 FRAME 并交换所有逻辑可用选项时,我可以将它调整到我想要的大小,但不能让它在单独的行中显示条目。相反,它看起来正在做的是在同一行显示每个条目,覆盖最后一个,因为它总是显示 TEMP-TABLE 中的最后一条记录。

我尝试实例化 FRAME “WITH iMaxPageSize DOWN”,但没有任何效果。在对这个特定选项进行了更深入的阅读之后,它看起来只能用于显示一个表中的多个字段,而不是多个表的某些字段。

希望这是有道理的,我真的需要帮助。

4

2 回答 2

1

想通了,花了我 8 个小时的累计阅读时间和试错编码。

FOR EACH tPage WITH 6 DOWN:

是我所需要的。

它仍然困扰着我,当我实例化一个 FRAME 时,尽管在 FOR EACH 中使用它,但我只能让它显示一条记录。

于 2012-10-11T16:16:34.420 回答
0

你需要做这样的事情 - FIND / DO 组合并没有像你想象的那样做。

DEF TEMP-TABLE tMainTable.
DEF TEMP-TABLE tPage LIKE tMainTable.
DEF VAR iCursor AS INT.
DEF VAR i AS INT.      
i = 0.

FOR EACH tMainTable
   WHERE tMainTable.UniqueId EQ iCursor
   NO-LOCK:

   i = i + 1.
   IF i > maxpagesize THEN
      LEAVE.

   CREATE tPage.
   BUFFER-COPY tMainTable TO tPage.

END.

  /* DISPLAY */

FOR EACH tPage:
   DISPLAY tPage.iNumber tPage.Name 
      WITH DOWN.
END.
于 2012-10-11T00:44:22.390 回答