[FORM]欄位變色

Oracle form visual attribute

   PROCEDURE assign_visual_attribute IS
      cur_itm        VARCHAR2(80);
      cur_block      VARCHAR2(80) := :SYSTEM.current_block;
      itemcanvas     VARCHAR2(20);
      v_count        NUMBER       := 0;
   BEGIN
      cur_itm                    := GET_BLOCK_PROPERTY(cur_block, first_item);
      v_count                    := 0;

      WHILE(cur_itm IS NOT NULL) LOOP
         v_count                    := v_count + 1;
         cur_itm                    := cur_block || '.' || cur_itm;

         IF v_count NOT IN(4) THEN
/* 因為沒有 Canvas 的欄位無法變更 Background Color, 所以必須要額外的判斷 */
            itemcanvas                 := GET_ITEM_PROPERTY(cur_itm, item_canvas);

            IF itemcanvas IS NOT NULL THEN
               IF :main.item_type_code = '10' THEN                                                                                   --上架
                  SET_ITEM_INSTANCE_PROPERTY(cur_itm, current_record, visual_attribute, 'DATA');
               ELSIF :main.item_type_code = '20' THEN                                                                                 --鎖檔
                  SET_ITEM_INSTANCE_PROPERTY(cur_itm, current_record, visual_attribute, 'CUSTOM1');
               ELSIF :main.item_type_code = '30' THEN                                                                                 --下架
                  SET_ITEM_INSTANCE_PROPERTY(cur_itm, current_record, visual_attribute, 'CUSTOM2');
               ELSIF :main.item_type_code = '40' THEN
                  SET_ITEM_INSTANCE_PROPERTY(cur_itm, current_record, visual_attribute, 'CUSTOM3');
               ELSIF :main.item_type_code IS NULL THEN
                  SET_ITEM_INSTANCE_PROPERTY(cur_itm, current_record, visual_attribute, 'CUSTOM4');
               ELSE
                  SET_ITEM_INSTANCE_PROPERTY(cur_itm, current_record, visual_attribute, 'DATA');
               END IF;
            END IF;
         END IF;

         cur_itm                    := GET_ITEM_PROPERTY(cur_itm, nextitem);
      END LOOP;
   END assign_visual_attribute;