2013-04-26 1 views
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. 

Может ли кто-нибудь помочь мне в этом?

ответ

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

+0

Отлично, рад помочь! – Jensd