【问题标题】:Frame only displaying last record in table框架只显示表格中的最后一条记录
【发布时间】:2012-10-12 00:16:34
【问题描述】:

希望这将是我一段时间内的最后一个问题。我知道关于 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”,但没有任何效果。在对这个特定选项进行了更深入的阅读之后,它似乎只可用于显示一个表中的多个字段,而不是多个表的某些字段。

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

【问题讨论】:

    标签: progress-4gl


    【解决方案1】:

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

    FOR EACH tPage WITH 6 DOWN:
    

    这就是我所需要的。

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

    【讨论】:

      【解决方案2】:

      您需要做这样的事情 - 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.
      

      【讨论】:

      • 是的,我知道,这是对我的 1500 行程序的一个非常粗略的总结。我的迭代和页面构建代码非常完美,我只需要框架显示方面的帮助。谢谢。
      • 添加框架代码 im 使用:DEFINE FRAME f WITH DOWN 6. /* tPage 最多有 6 个 / FOR EACH tPage WITH FRAME f: DISPLAY / 2 个字段 */ .结尾。并且输出始终是临时表中的最后一条记录,位于第一行,仅此而已。
      • 基本上我在问两个问题之一: 1.有没有一种方法可以在不显式实例化的情况下控制框架的大小。或 2. 为什么我显式实例化的框架只显示一条记录(表中的最后一条)。
      • 无论框架定义如何,您发布的代码都只会显示一条记录。 “down 6”这个短语不起作用,正确的短语是“6 DOWN”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多