TAB页制作

tab标签画布和fixed画布的应用

加标签画布,继承子类信息

tab画布添加标签,按照需求添加

设置标签的子类信息

创建与标签同名的堆叠画布,有几个标签建几个画布,继承子类信息

数据块的项分别显示在不同的画布上

每个画布里的内容设置位置,不同画布被切割大小要相同(美观),项的起始位置也要相同,效果如下

tab画布,fixed画布与第一个标签画布堆叠在主画布上MAIN

 

调整各个画布的位置,效果如下

调完第一个标签画布的位置后,要以此调整所有标签画布的位置与第一画布重叠

在程序单元的增删改查包中增加一个存储过程代码如下:

procedure line_tab(event in varchar2) is

 

  curr_canvas_name varchar2(30) := get_item_property(:system.cursor_item,

                                                    item_canvas);

  current_tab varchar2(30) := get_canvas_property('LINE_TAB',

                                      topmost_tab_page);

  target_canvas_name varchar2(30) := :system.tab_new_page;

 

begin

  if (event = 'WHEN-TAB-PAGE-CHANGED') then

    if curr_canvas_name in ('MAIN') then

         show_view(target_canvas_name);

      go_item(:system.cursor_item);

    else

         validate(item_scope);

         if not form_success then

             set_canvas_property('LINE_TAB',topmost_tab_page, :system.tab_previous_page);

             return;

         end if;

         if target_canvas_name = 'LINE_MAIN' then

        go_item('ORDER_HEADERS_V.VENDOR_ID');

      elsif target_canvas_name = 'LINE_ADDITION' then

        go_item('ORDER_HEADERS_V.OTHER1');

         elsif target_canvas_name = 'LINE_OTHERS' then

        go_item('ORDER_HEADERS_V.OTHER6');

         end if;

      end if;

  elsif (event = 'WHEN-NEW-ITEM-INSTANCE') then

    if ((curr_canvas_name in ('LINE_MAIN','LINE_ADDITION','LINE_OTHERS')) and (curr_canvas_name != current_tab)) then

      set_canvas_property('LINE_TAB',topmost_tab_page,curr_canvas_name);

    end if;

  elsif (event = 'INIT') then

    show_view('LINE_TAB');

    show_view('LINE_FIXED');

    hide_view('LINE_OTHERS');

    hide_view('LINE_ADDITION');

    show_view('LINE_MAIN');

  else

    app_exception.invalid_argument('LINE_TAB',

                'EVENT', event);

  end if;

 

end line_tab;

  1. form级别触发器WHEN-TAB-PAGE-CHANGED,代码如下

declare

the_canvas varchar2(30) := :system.event_canvas;

begin

if the_canvas = 'LINE_TAB' then

  

ORDER_HEADERS_V_PRIVATE.line_tab('WHEN-TAB-PAGE-CHANGED');

end if;

end;

form级别触发器WHEN-NEW-FORM-INSTANCE,增加如下代码

每个标签的开始项和结束项item下增加触发器WHEN-NEW-ITEM-INSTANCE

原文地址:https://www.cnblogs.com/akami/p/6932565.html