现在的位置: 首页 > 综合 > 正文

Tab Canvas自我总结

2013年06月16日 ⁄ 综合 ⁄ 共 3473字 ⁄ 字号 评论关闭

Tab Canvas与Stacked Canvas在数据上没有任何联系,它们都要放在一个content Canvas上面,只是遮挡与被遮挡的关系.

需要分别调整各个Stacked Canvas与Tab Canvas的位置关系,通过菜单Views->stacked views来调整与隐藏已调整好的.

 

响应Tab Canvas点击事件的代码需要放在FORM级WHEN-TAB-PAGE-CHANGED的trigger中.

下了俩个前人写的例子,以备自己以后参考:

例子一:

WHEN-TAB-PAGE-CHANGED事件中:

IF :system.tab_previous_page = 'MAIN_PAGE' THEN
   validate(block_scope);
   IF :system.MODE = 'ENTER-QUERY' OR NOT form_success THEN
      --Message here
      set_canvas_property('INVOICE_LINE_TAB',topmost_tab_page,:system.tab_previous_page);
      RETURN;
   END IF;
ELSIF :system.tab_previous_page = 'SALES_ORDER_PAGE' THEN
      validate(block_scope);
      IF :system.MODE = 'ENTER-QUERY' OR NOT form_success THEN
         --Message here
         set_canvas_property('INVOICE_LINE_TAB',topmost_tab_page,:system.tab_previous_page);
         RETURN;
      END IF;
--
ELSIF :system.tab_previous_page = 'MORE_PAGE' THEN
      validate(block_scope);
      IF :system.MODE = 'ENTER-QUERY' OR NOT form_success THEN
         --Message here
         set_canvas_property('INVOICE_LINE_TAB',topmost_tab_page,:system.tab_previous_page);
         RETURN;
      END IF;
--
END IF;

IF :system.tab_new_page = 'MAIN_PAGE' THEN
show_view('INVOICE_LINE_FIX_STACKED');
show_view('INVOICE_LINE_MAIN_STACKED');
show_view('LINE_SCROLLBAR_STACKED');
hide_view('INVOICE_LINE_ORDER_STACKED');
hide_view('INVOICE_LINE_MORE_STACKED');
go_item('AR_INV_LINES.L_UOM_CODE');
ELSIF :system.tab_new_page = 'SALES_ORDER_PAGE' THEN
show_view('INVOICE_LINE_FIX_STACKED');
show_view('INVOICE_LINE_ORDER_STACKED');
show_view('LINE_SCROLLBAR_STACKED'); 
hide_view('INVOICE_LINE_MAIN_STACKED');
hide_view('INVOICE_LINE_MORE_STACKED');
go_item('AR_INV_LINES.L_SALES_ORDER');
--
ELSIF :system.tab_new_page = 'MORE_PAGE' THEN
show_view('INVOICE_LINE_MORE_STACKED'); 
hide_view('INVOICE_LINE_MAIN_STACKED');
hide_view('INVOICE_LINE_FIX_STACKED');
hide_view('LINE_SCROLLBAR_STACKED'); 
hide_view('INVOICE_LINE_ORDER_STACKED'); 
go_item('AR_INV_LINES.L_INTERFACE_LINE_CONTEXT');
--
END IF;

 

例子二:

WHEN-TAB-PAGE-CHANGED事件中:

control.Tab_Controler('WHEN-TAB-PAGE-CHANGED');

 

Program Units中:

PACKAGE BODY CONTROL IS
  PROCEDURE TAB_CONTROLER(EVENT VARCHAR2) IS
    CURR_CANVAS_NAME   VARCHAR2(30) := GET_ITEM_PROPERTY(:SYSTEM.CURSOR_ITEM, ITEM_CANVAS);
    CURRENT_TAB        VARCHAR2(30);
    TARGET_CANVAS_NAME VARCHAR2(30) := :SYSTEM.TAB_NEW_PAGE;
  BEGIN
    IF (EVENT = 'WHEN-TAB-PAGE-CHANGED')
    THEN
      IF (TARGET_CANVAS_NAME = 'PAGE1') THEN
        validate(record_scope);
       IF NOT FORM_SUCCESS  THEN
         set_canvas_property('CANVAS_TAB',topmost_tab_page,:system.tab_previous_page); --:system.tab_previous_page
         return;
       END IF;
        GO_ITEM('TRUCK_BASIC_LINE.STATION_START');
        SHOW_VIEW('CAN_LINE1');
        HIDE_VIEW('CAN_LINE2');
        set_block_property('TRUCK_BASIC_LINE',insert_allowed,Property_True); 
        set_block_property('TRUCK_BASIC_LINE',update_allowed,Property_True); 
       set_block_property('TRUCK_BASIC_LINE',delete_allowed,Property_True); 
         
       ELSIF TARGET_CANVAS_NAME = 'PAGE2' THEN
        validate(record_scope);
         IF NOT FORM_SUCCESS  THEN
           set_canvas_property('CANVAS_TAB',topmost_tab_page,:system.tab_previous_page); --:system.tab_previous_page
           return;
         END IF;
          GO_ITEM('TRUCK_BASIC_LINE.CREATION_DATE');
          SHOW_VIEW('CAN_LINE2');
          HIDE_VIEW('CAN_LINE1');
          set_block_property('TRUCK_BASIC_LINE',insert_allowed,Property_False); 
          set_block_property('TRUCK_BASIC_LINE',update_allowed,Property_False); 
         set_block_property('TRUCK_BASIC_LINE',delete_allowed,Property_False); 
      END IF;
   
    END IF;
  END TAB_CONTROLER;
END CONTROL;

 

抱歉!评论已关闭.