开发包含folder的TAB页FORM

转自:https://blog.csdn.net/u012900186/article/details/40503579

较于只有FOLDER,没有TAB页的FORM开发,稍微复杂了一点。

包含FOLDER的TAB页一共需要4张画布。

1.MAIN                        --主画布

2.MAIN_TAB              --TAB页画布

2.BLOCK_FIX           --数据块的固定画布(相当于没有TAB页的FORM的MAIN画布,指示器和滚动条等都放在这个画布)

2.BLOCK_STK         --数据块的堆叠画布(与之前的堆叠画布基本相同,数据块的项和展示块(PROMPT块)的项都放在这个画布)

与没有TAB页的FOLDER相比,主要需要注意的地方有:

1.FOLDER的初始化

在触发器 when-new-form-intance 中初始化FOLDER

app_folder.define_folder_block(object_name        => 'ONHAND_FOLDER_FD1',                     --FOLDER的名字,可以任意取
                              folder_block_name  => 'ONHAND_DETAIL',                               --数据块的名字
                              prompt_block_name  => 'ONHAND_DETAIL_PROMPT',          --题头块的名字(PROMPT块)
                              folder_canvas_name => 'OHNAND_STK',                                   --数据块的堆叠画布
                              folder_window_name => 'MAIN',                                                    --主窗口
                              disabled_functions => '',                                                                  --禁用的函数
                              tab_canvas_name    => 'MAIN_TAB',                                             --TAB页
                              fixed_canvas_name  => 'ONHAND_FIX');                                     --数据块的固定画布
app_folder.event('INSTANTIATE');

扫描二维码关注公众号,回复: 4435174 查看本文章

2.添加触发器 WHEN-TAB-PAGE-CHANGED

主要用于响应 更换标签页 的事件 

主要用到的函数 (以从page1到page2的更换为例):

hide_view('page1_fix');  隐藏位于page1标签页的画布

show_view('page2_fix');  显示位于page2标签页的画布

go_item('bolck.item'); 定位到page2的item

:system.tab_new_page 目标TAB页的名字

示例:

PROCEDURE WHEN_TAB_PAGE_CHANGED IS
  BEGIN
    validate(block_scope);
    IF :system.mode = 'ENTER-QUERY' OR NOT form_success THEN
          set_canvas_property('MAIN_TAB',
                              topmost_tab_page,
                              :system.tab_previous_page);
          RETURN;
        END IF;
      IF :system.tab_new_page = 'PAGE1' THEN
        
        show_view('PAGE1_FIX');
        hide_view('PAGE2_FIX');
        go_item('BLOCK1.ITME1');
        
      ELSIF :system.tab_new_page = 'PAGE2' THEN
        go_item('BLOCK2.ITEM1');
        show_view('PAGE2_FIX');              
        hide_view('PAGE1_FIX');
      END IF;
      
  END WHEN_TAB_PAGE_CHANGED;

猜你喜欢

转载自blog.csdn.net/qq_32445015/article/details/83151372