APEX上自制菜单

12 篇文章 0 订阅
11 篇文章 0 订阅
本文介绍了如何在APEX中创建自定义菜单,提供了一个PL/SQL过程示例,用于生成两级菜单。示例展示了如何设置选中状态、链接、图片等,并给出了内部变量和循环处理菜单项的逻辑。
摘要由CSDN通过智能技术生成

虽然APEX的THEME提供了很好的菜单功能,有时候还是需要自制菜单。

这里提供一个自制菜单的PL/SQL Procedure及使用实例。

 

比如,要做出这样的两级菜单:

 

显示菜单的两个Region:

Display Point: Page Template Body (1)
 TabsPL/SQL 

Display Point: Page Template Body (3)
 REVENUE/COST计算书PL/SQL 

 

第二个Region使用的PL/SQL代码(例):

begin
 SUP_TABS_HTML(title=>'#年度#第1年#第2年#第3年#第4年#第5年',
          selected_no=>2,
          ws_image=>'#WORKSPACE_IMAGES#',
          slct_gif=>'bg-select1.gif',
          unslct_gif=>'bg-unselect1.gif',
          href=>'javascript:void(0);#f?p=104:91:::NO::P7_NENDO:1#f?p=104:91:::NO::P7_NENDO:2#f?p=104:91:::NO::P7_NENDO:3#f?p=104:91:::NO::P7_NENDO:4#f?p=104:91:::NO::P7_NENDO:5');

end;

 

注意事项:这里选择的是“第1年”,如果选择的是“第2年”(当然是另一页了),上例中要改为 selected_no=>3.

 

PL/SQL Procedure

 

create or replace procedure "SUP_TABS_HTML"
(title IN VARCHAR2 ,
href IN VARCHAR2,
selected_no IN NUMBER default 1,
separator IN CHAR default '#',
ws_image IN VARCHAR2,
slct_gif IN VARCHAR2 default 'bg-select.gif',
unslct_gif IN VARCHAR2 default 'bg-unselect.gif'
)
is

--- Internal variables, constant
width number := 1200;
head varchar2(500) :=
'<table border=0 cellspacing=0 cellpadding=1>
    <tr bgcolor="#FFFFFF">
     <td style="border-left:.5pt solid;width:20px;height:25px;
                background:url(#WORKSPACE_IMAGES##UNSLCT_GIF#);"></td>';

selected varchar2(500) :=
'     <td style="border-left:.5pt solid;width:100px;
                background:url(#WORKSPACE_IMAGES##SLCT_GIF#);
                color: SteelBlue;text-align:center;
                vertical-align:bottom">#TITLE#</td>';

unselected varchar2(500) :=
'     <td style="border-left:.5pt solid;width:100px;
                background:url(#WORKSPACE_IMAGES##UNSLCT_GIF#);
                text-align:center;">
                <a href="#HREF#" style="color:white;">#TITLE#</a></td>';

foot  varchar2(500) :=
'     <td style="border-left:.5pt solid;width:#WIDTH#px;
                background:url(#WORKSPACE_IMAGES##UNSLCT_GIF#);"> 
                </td>
    </tr>
</table>';

--- Internal variables
i number;
title_now varchar2(500);
href_now varchar2(500);
--ws_image varchar2(200);

begin

--select '#WORKSPACE_IMAGES#' into ws_image from dual;
--htp.p('**************'||ws_image);
head       := replace(head,'#WORKSPACE_IMAGES#', ws_image);
selected   := replace(selected,'#WORKSPACE_IMAGES#', ws_image);
unselected := replace(unselected,'#WORKSPACE_IMAGES#', ws_image);
foot       := replace(foot,'#WORKSPACE_IMAGES#', ws_image);

head       := replace(head,'#UNSLCT_GIF#', unslct_gif);
selected   := replace(selected,'#UNSLCT_GIF#', unslct_gif);
unselected := replace(unselected,'#UNSLCT_GIF#', unslct_gif);
foot       := replace(foot,'#UNSLCT_GIF#', unslct_gif);

head       := replace(head,'#SLCT_GIF#', slct_gif);
selected   := replace(selected,'#SLCT_GIF#', slct_gif);
unselected := replace(unselected,'#SLCT_GIF#', slct_gif);
foot       := replace(foot,'#SLCT_GIF#', slct_gif);

htp.p(head);
i:=1;
loop

  title_now := regexp_substr(title, '[^'||separator||']+', 1, i);
  href_now := regexp_substr(href, '[^'||separator||']+', 1, i);
  if (title_now is null) or (href is null) then
     exit;
  end if;

/******* debug **
htp.p(i);
htp.p(title_now);
htp.p(href_now);
************/

href_now := APEX_UTIL.PREPARE_URL(href_now);
if (i = selected_no) then
  htp.p(replace(selected,'#TITLE#',title_now));
else
 htp.p(replace(replace(unselected,'#TITLE#',title_now),'#HREF#',href_now));
end if;

  i := i+1;
end loop;
 
 htp.p(replace(foot,'#WIDTH#',width-(i*120)));
 htp.p('<br>');
end;

 

 

注意:

title变量是菜单的文字串,用#分割(可给separator指定不同字符,默认为#)。

href变量是URL的文字串,默认用#分割。

 

用到的GIF文件(要上传到APEX的Workspace)

 

想照样使用的可下载

    

 

   

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值