2013-04-26 74 views
0

我用一个浏览窗口小部件中显示搜索结果。基于在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. 

任何人都可以帮助我做到这一点吗?

回答

2

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

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

但它只会改变显示格式,而不是列的宽度。要设置你的宽度:

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. 
+0

感谢您的答复。它的运作良好,并帮助我做了很多。 – Anburaja 2013-04-26 12:56:30

+0

太棒了,很高兴帮助! – Jensd 2013-04-26 12:57:34