码迷,mamicode.com
首页 > 其他好文 > 详细

[转]Form中控制Tab画布不同标签间切换的方法

时间:2016-04-19 13:44:39      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

转自:http://yedward.net/?id=68

Form中一般常用的画布类型包括content、stacked、tab这三种,其实content类型的画布是每一个form都必须有的,而且只能有且仅有一个。其中,Tab画布算是比较特殊的一种画布了,首先不能直接在Tab上放置任何item,所有的item都是放在Tab的下属的标签页中,其次它的切换也还是蛮有门道的,这篇文章就聊聊怎么控制Form中Tab画布不同标签之间的切换。

假设有这样一个例子,有一个Tab画布(名为TAB_DEMO),其下有headers、lines两个标签页,同时还有一个名为order_lines_stacked的stacked类型的画布,我想实现,headers是第一个标签页,也是默认展示的标签页,我要把order_lines_stacked放在lines标签里面,当切换到lines的时候,order_lines_stacked显示,切换到headers的时候,order_lines_stacked又隐藏掉。

对于上面这个例子,首先要知道的是Tab画布及其标签页和堆叠画布其实是独立的,并不能直接通过属性设置来让stacked画布放置在某一个Tab标签页中,这个时候想要实现这样的功能,就要通过代码来实现,这也就是我要说的Tab特殊的一个地方。这里,我们要用到一个Form级的WHEN-TAB-PAGE-CHANGED触发器,特别要注意的是该触发器的fire条件是用鼠标点击时才触发,也正因为这样后面我们还要加一个触发器,以实现当是使用快捷键而不是鼠标点击来切换标签时候的功能实现。

 

对于上面的例子,实现过程如下:

 

在Form级添加WHEN-NEW-FORM-INSTANCE,代码如下:

set_canvas_property(TAB_DEMO, TOPMOST_TAB_PAGE, HEADERS);
hide_view(ORDER_LINES_STACKED);

在Form级添加WHEN-TAB-PAGE-CHANGED,代码如下:

if :system.tab_previous_page = HEADERS then
    validate(block_scope);
    if :system.MODE = ENTER-QUERY or not form_success then
        set_canvas_property(TAB_DEMO, topmost_tab_page, :system.tab_previous_page);
        return;
    end if;
elsif :system.tab_previous_page = LINES then
    validate(block_scope);
    if :system.MODE = ENTER-QUERY or not form_success then
        set_canvas_property(TAB_DEMO, topmost_tab_page, :system.tab_previous_page);
        return;
    end if;
end if;
if :system.tab_new_page = LINES then
    show_view(ORDER_LINES_STACKED);
    go_item(ORDER_LINES.ORG);           --  ORDER_LINES.ORG是一个Item,假设本来LINES标签页上就已经设置了
elsif :system.tab_new_page = HEADERS THEN
    hide_view(ORDER_LINES_STACKED);
    go_item(ORDER_HEADERS.DESCRIPTION);      -- ORDER_HEADERS.DESCRIPTION是一个Item,假设本来HEADERS标签页上已经设置了
end if;

如果是使用快捷键切换的话,不会触发上面的trigger,所以做如下处理:

在ORDER_LINES.ORG这Item上面添加一个WHEN-NEW-ITEM-INSTANCE触发器,代码如下:

show_view(ORDER_LINES_STACKED);

在ORDER_HEADERS.DESCRIPTION上面添加一个WHEN-NEW-ITEM-INSTANCE触发器,代码如下:

hide_view(ORDER_LINES_STACKED);

 

[转]Form中控制Tab画布不同标签间切换的方法

标签:

原文地址:http://www.cnblogs.com/pompeii2008/p/5407587.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!