如果需要整行變色, 一個欄位寫 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;

Posted by Aloz at 痞客邦 PIXNET 留言(1) 引用(0) 人氣()


open trackbacks list Trackbacks (0)

留言列表 (1)

Post Comment
  • 牛角
  • 很有趣的function,這種視覺系的功能常常會讓
    user會覺得"你好厲害",反而其他複雜的join從沒
    人感受的出來,呵!
  • 哈哈, 沒錯, 這種功能只是讓 Use 覺得畫面很華麗, 可是實質用途並不大 :D

    Aloz replied in 2010/04/07 13:27

You haven’t logged in yet, please use guest status to leave message. You can also log in with above service account and leave message

other options