0

我使用了 BROWSE 小部件来显示搜索结果。搜索基于 TEMP-TABLE 中的几个可用字段之一。

我想要做的是将匹配字段的格式动态设置为“x(16)”而不是“x(11)”。匹配的字段名称存储在变量中。

下面的示例是一个静态浏览,其中搜索基于“desc1”,我想让它动态化,以便无论匹配字段如何,它都可以用于显示结果。

DEFINE BROWSE brResults
QUERY qResults
DISPLAY
  ttRowsmaj.desc1 FORMAT "x(16)" COLUMN-LABEL "Desc 1"
  ttRowsmaj.desc2 FORMAT "x(11)" COLUMN-LABEL "Desc 2"
  ttRowsmaj.desc3 FORMAT "x(11)" COLUMN-LABEL "Desc 3"
  ttRowsmaj.desc4 FORMAT "x(11)" COLUMN-LABEL "Desc 4"
  ttRowsmaj.desc5 FORMAT "x(11)" COLUMN-LABEL "Desc  5"
  WITH 11 DOWN MULTIPLE NO-BOX.

谁能帮我做到这一点?

4

1 回答 1

2

您可以像这样设置缓冲区字段的格式:

ttRowsmaj.desc3:FORMAT IN BROWSE brResults = "x(16)".

但它只会改变 DISPLAY 格式,不会改变列的宽度。要设置你做的宽度:

ttRowsmaj.desc3:WIDTH IN BROWSE brResults = 20.

或更动态的方法:

DEFINE VARIABLE iCol         AS INTEGER     NO-UNDO.
DEFINE VARIABLE cSearchField AS CHARACTER   NO-UNDO.

/* Assuming search-field was "desc4" */
ASSIGN 
    cSearchField = "desc4".

/* Go through all columns */
DO iCol = 1 TO BROWSE brResults:NUM-COLUMNS.

    /* If column name matches serch*/
    IF BROWSE brResults:GET-BROWSE-COLUMN(iCol):NAME = cSearchField THEN DO:
        /* Set format & width */
        BROWSE brResults:GET-BROWSE-COLUMN(iCol):FORMAT = "X(16)".
        BROWSE brResults:GET-BROWSE-COLUMN(iCol):WIDTH  = 25.
    END.

END.
于 2013-04-26T10:28:43.090 回答