Oracle Retail(Retek) form links页签开发总结

本文总结oracle retail(retek)系统中links的开发方法,实现效果如下图1所示:

links页签实现效果

图1:links页签实现效果

实现步骤如下:

Step 1:新建form文件cmx_test_link.fmb。

加载对象组OG_LINKS

图2:加载对象组OG_LINKS

Step 2:加载对象文件OG_LINKS,可以从现有的form中将对象拖(复制)过来。

加载库文件LINKS45

图3:加载库文件LINKS45

Step 3:加载库文件LINKS45。

新建一个block、item和check box

图4:新建一个block、text item和check box

Step 4:新建一个block、text item和check box,如上图4所示,并且设置好text item和check box的subclass子类,子类属性设置如下:

Text Item(Ln)的subclass:PC_LINK_ITEM

Check Box(CB_n)的subclass:PC_LINK_CB

Step 5:在form的初始化程序p_form_startup中启用代码。

(1)links.gv_max_links := 36; -- 初始化连接数量

(2)点击link标签时的trigger:

when-mouse-enter和when-mouse-leave设置item的显示颜色,参考标准代码。

-- when-mouse-enter中代码
BEGIN
  links.gv_last_color := get_item_property(:system.trigger_item,
                                           foreground_color);
  links.change_link_blue(:system.trigger_item);
EXCEPTION
  WHEN form_trigger_failure THEN
    RAISE;
  WHEN OTHERS THEN
    emessage(SQLERRM);
    RAISE form_trigger_failure;
END;
-- when-mouse-leave中代码
set_item_property(:system.trigger_item,
                  foreground_color,
                  links.gv_last_color);

when-mouse-click:获取当前标签link_id,根据不同的form调用不同的form。

DECLARE
  l_calling_link NUMBER;
BEGIN
  IF length(:system.mouse_item) > 9 THEN
    l_calling_link := to_number(substr(:system.mouse_item,
                                       9,
                                       2));
  ELSE
    l_calling_link := to_number(substr(:system.mouse_item,
                                       9,
                                       1));
  END IF;
  IF name_in('B_link.L' || l_calling_link) IS NOT NULL THEN
    internal_variables.gv_supp_link_clicked := TRUE;
    -- 这里调用的determine_call,可参考系统中的代码
    p_call.determine_call(l_calling_link,
                          links.gv_link_id(l_calling_link));
  END IF;
EXCEPTION
  WHEN form_trigger_failure THEN
    RAISE;
  WHEN OTHERS THEN
    emessage(SQLERRM);
    RAISE form_trigger_failure;
END;

Step 6:把新增的link的代码插入form_links表和form_links_role表。

INSERT INTO form_links
VALUES
  ('FM__ITEMMASTER', 'ITEMPR', '商品销售模式', 38, 'N');

第一个值是对应的form的name属性。

第二个值是该link的代码。

第三个值是该link对应的名称描述。

第四个值是该link在该form里的link序号。

第五个值是该link在该form里是否必需,新增记录时,该标签的信息维护是否必须输入。

INSERT INTO form_links_role
VALUES
  ('FM_ITEMMASTER', 'ITEMPR', 'DEVELOPER', 'N');

第一个值是对应的from的name属性。

第二个值是该link的代码。

第三个值是该link能让哪些角色访问。

第四个值是该link在这个角色下是不是只有view的权限。

注意,links45.pll里面定义了一个form最多只能有40个link,当需求的link超过这个数目的时候,可以尝试修改INIT_LINK_ID、INIT_LINKS_VISITED_N、INIT_REQ_N函数来扩展。

本文标题:Oracle Retail(Retek) form links页签开发总结

本文链接:http://yedward.net/?id=192

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章