概述
转自: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');
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;
最后
以上就是鲤鱼泥猴桃为你收集整理的开发包含folder的TAB页FORM的全部内容,希望文章能够帮你解决开发包含folder的TAB页FORM所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复