如果需要整行變色, 一個欄位寫 Set Item Property, 這樣太累了, 如果欄位又多, 更是不可能, 上網找了資料後, 整理了寫法如下

1. 先設定 Form 的 Visual Attribute, 屬性就設定 Background Color 為需要的顏色

2. 在所需要觸發的 EVEN Trigger (ex: BLOCK 的 POST_QUERY) 之下, 呼叫以下 Procedure

PROCEDURE ASSIGN_COLOR IS
CUR_ITM VARCHAR2(80);
  CUR_BLOCK VARCHAR2(80) := :SYSTEM.CURRENT_BLOCK;
  ITEMCANVAS VARCHAR2 (20);
BEGIN
CUR_ITM := GET_BLOCK_PROPERTY(CUR_BLOCK, FIRST_ITEM)
  WHILE ( CUR_ITM IS NOT NULL ) 
  LOOP 
    CUR_ITM := CUR_BLOCK || '.' || CUR_ITM;
    /* 因為沒有 Canvas 的欄位無法變更 Background Color, 所以必須要額外的判斷 */

    ITEMCANVAS := GET_ITEM_PROPERTY (CUR_ITM, ITEM_CANVAS);
    
    IF ITEMCANVAS IS NOT NULL THEN
      IF 條件1 THEN
        SET_ITEM_INSTANCE_PROPERTY(CUR_ITM, CURRENT_RECORD, VISUAL_ATTRIBUTE, 'VA_RED');
      ELSIF 條件2 THEN
        SET_ITEM_INSTANCE_PROPERTY(CUR_ITM, CURRENT_RECORD, VISUAL_ATTRIBUTE, 'VA_YELLOW');
      ELSE
        SET_ITEM_INSTANCE_PROPERTY(CUR_ITM, CURRENT_RECORD, VISUAL_ATTRIBUTE, 'VA_NORMAL');
      END IF;
    END IF;
    
    CUR_ITM := GET_ITEM_PROPERTY(CUR_ITM, NEXTITEM)
  END LOOP;
END;

arrow
arrow
    全站熱搜

    Aloz 發表在 痞客邦 留言(1) 人氣()