|
請問如何通過代碼來生成PB菜單?
本人想通過在數據庫中的記錄來建立一個菜單并連接相關模塊 |
|
这个功能可以实现,但是比较麻烦
基本的思路是:
建立菜单表及对应的窗口名
利用菜单的TAG和MICROHELP属性,然后用
window lw_window
open(lw_window,as_window)
as_window为传入的窗口名称
具体代码以后在帖! |
| xchenliaox | | 2006-12-6 02:27 |
|
我的系统就是根据数据库里面的内容来动态生成菜单管理权限的
/************************************************************************
名称: wf_menu_generate_one
功能: 添加一级菜单功能
参数: as_text 菜单Text值
as_tag 菜单tag值
ad_parentid 父菜单ID
返回: integer
1: 成功
创建: 2006-02-15
修改记录:
//用途:在最后一项以及菜单之后新增一项一级菜单(修改过,根据菜单ID的编号来确定在哪一项目下新增,
所以要注意菜单ID的编号规则)
**************************************************************************/
//////////////////////////////////////////////
integer li_itemcount //声明变量记录当前一级菜单总个数
string ls_Menu_Text //菜单Text值
//新创建一个菜单对象,并将其放到菜单数组im_new[]当中
ii_count++
im_new[ii_count]=create m_new
//此处对新创建的菜单对象获取引用
li_itemcount=upperbound(m_main.item[])
m_main.item[li_itemcount + 1]=im_new[ii_count].item[1]
//下面是设置新生成菜单的TEXT属性,这个属性可以从数据库中取,但此处省略简化掉了
m_main.item[li_itemcount + 1].text=As_text
//下面是设置新生成菜单的TAG属性,这个属性可以从数据库中取,但此处省略简化掉了;
//通过这个TAG可以当作功能号等来使用,通过gf_menumessage()函数来予以公共处理;
m_main.item[li_itemcount + 1].tag=string(ad_tag)
//此处来将新生成的菜单对象显示出来;
m_main.item[1].hide()
m_main.item[1].show()
return 1
/************************************************************************
名称: wf_menu_generate_two
功能: 添加二级菜单功能的实现
参数: as_text 菜单Text值
as_tag 菜单tag值
ad_parentid 父菜单ID
返回: integer
1: 成功
创建: 2006-02-15
修改记录:
用途:在最后一项一级菜单下新增一项二级菜单(修改过,根据菜单ID的编号来确定在哪一项目下新增,
所以要注意菜单ID的编号规则)
**************************************************************************/
//声明变量记录当前一级菜单总个数、最后一项一级菜单对应的二级菜单总个数
integer li_precount,li_itemcount
li_precount=ad_parentid+1 //传替过来的参数要加1是因为有一个隐藏的Item
//messagebox("AAAAAAAAAA",string(ad_parentid))
//新创建一个菜单对象,并将其放到菜单数组im_new[]当中;
ii_count++
im_new[ii_count]=create m_new
if li_precount = 0 then
messagebox("提示","请先创建一级菜单")
return -1
end if
//此处对新创建的菜单对象获取引用;
//li_precount=upperbound(m_main.item[])
//messagebox("li_precount",string(li_precount)) //一级第几个
li_itemcount=upperbound(m_main.item[li_precount].item) //
//if li_itemcount
//messagebox("",string(li_itemcount))
//messagebox("li_itemcount",string(li_itemcount)) //要新加的第几个
m_main.item[li_precount].item[li_itemcount + 1]=im_new[ii_count].item[1]
//下面是设置新生成菜单的TEXT属性,这个属性可以从数据库中取,但此处省略简化掉了;
//m_main.item[li_precount].item[li_itemcount + 1].text="新增二级-" + string(li_precount) + "-" + string(li_itemcount + 1)
m_main.item[li_precount].item[li_itemcount + 1].text=as_text
//下面是设置新生成菜单的TAG属性,这个属性可以从数据库中取,但此处省略简化掉了;
//通过这个TAG可以当作功能号等来使用,通过gf_menumessage()函数来予以公共处理;
m_main.item[li_precount].item[li_itemcount + 1].tag=string(ad_tag)
//此处来将新生成的菜单对象显示出来;
m_main.item[1].hide()
m_main.item[1].show()
return 1
/************************************************************************
名称: wf_menu_generate_three
功能: 添加三级菜单功能的实现
参数: as_text(string) 菜单Text值
as_tag(string) 菜单tag值
ad_parentid(dec) 父菜单ID
返回: integer
-1: 失败
1: 成功
创建: 2006-02-15
修改记录:
用途:在最后一项二级菜单下新增一项三级菜单(修改过,根据菜单ID的编号来确定在哪一项目下新增,
所以要注意菜单ID的编号规则)
**************************************************************************/
//声明变量记录当前一级菜单总个数、最后一项一级菜单对应的二级菜单总个数;
integer li_fircount,li_precount,li_itemcount
dec ld_parentid
string ls_parentID
ls_parentID=string(ad_parentid)
li_fircount=dec(left(ls_parentID,1))
ld_parentid=dec(right(ls_parentID,2))
//messagebox(string(li_fircount),string(ld_parentid))
//新创建一个菜单对象,并将其放到菜单数组im_new[]当中
ii_count++
im_new[ii_count]=create m_new
//此处对新创建的菜单对象获取引用;
//li_fircount=upperbound(m_main.item[])
//li_precount=upperbound(m_main.item[li_fircount].item[])
li_fircount=li_fircount + 1 //要加1,因为有一菜单隐藏了
li_precount=ld_parentid
if li_precount = 0 then
messagebox("提示","请先创建二级菜单")
return -1
end if
li_itemcount=upperbound(m_main.item[li_fircount].item[li_precount].item[])
//messagebox(string(li_fircount), string(li_precount)+" A "+string(li_itemcount))
m_main.item[li_fircount].item[li_precount].item[li_itemcount + 1]=im_new[ii_count].item[1]
//下面是设置新生成菜单的TEXT属性,这个属性可以从数据库中取,但此处省略简化掉了;
//m_main.item[li_fircount].item[li_precount].item[li_itemcount + 1].text="新增三级-" + string(li_fircount) + "-" + string(li_precount) + "-" + string(li_itemcount + 1)
m_main.item[li_fircount].item[li_precount].item[li_itemcount + 1].text=as_text
//下面是设置新生成菜单的TAG属性,这个属性可以从数据库中取,但此处省略简化掉了;
//通过这个TAG可以当作功能号等来使用,通过gf_menumessage()函数来予以公共处理;
m_main.item[li_fircount].item[li_precount].item[li_itemcount + 1].tag=string(ad_tag)
//messagebox(as_text,string(ad_tag))
//此处来将新生成的菜单对象显示出来;
m_main.item[1].hide()
m_main.item[1].show()
return 1
[[i] 本帖最后由 xchenliaox 于 2006-12-6 10:29 编辑 [/i]] |
|
动态生成菜单了
怎么为菜单的单击事件添加代码??? |
关键词: PB EP 菜单
相关文章: 请问PIX 515如何与windows 2003 的radius服务器连结呀! PB高级开发环境配置 在PB中使用VC++编制的DLL PB动态报表格式自由定义的实现 谁有PB对密码加密的程序?
Powered by 51CTO.COM
|