pb窗口如何加入菜单控件

pb窗口如何加入菜单控件,第1张

您好,

首先要新建一个菜单(例 m_test) file >new >pbobject >menu

然后再你的窗口的 MenuName 属性 选择 m_test 菜单 就可以了

需要注意,child! 和 response! 类型的窗口是没有 MenuName 属性的

目的:

在事件中,要求动态创建右键菜单由于菜单是动态创建的,因此也要考虑到菜单的CLICKED事件的动态处理

参考资料:

http://blog.csdn.net/balloonman2002/article/details/28708

问题:

1.如何动态创建菜单? 能不能创建的菜单可被不同的窗口引用? 不用为了某一个窗口事先做一个菜单,那需要菜单的窗口多,而菜单又不一样怎么办?

2.如何执行动态创建的菜单的clicked事件?

过程:

1.创建菜单,打开PB画板,手工创建菜单,不需要创建下级菜单.如图

菜单中的clicked中的gvar.gs_menutag是string型的全局变量,表示菜单被clicked后把该菜单的tag值赋给gvar.gs_menutag

2.在dw_2的rbuttondown事件中生成菜单的过程

gm_popmenu lm_new[]

menu lm_menu

integer li_xh

string ls_text,ls_tag

lm_menu = create menu

do

li_xh ++

choose case li_xh

case 1

ls_text = "插入"

ls_tag = "ue_ins"

case 2

ls_text = "删除"

ls_tag = "ue_del"

case 3

ls_text = "编辑"

ls_tag = "ue_edt"

case 4

ls_text = "刷新"

ls_tag = "ue_cancel"

end choose

lm_menu.item[li_xh] = create gm_popmenu

lm_menu.item[li_xh].text = ls_text

lm_menu.item[li_xh].tag = ls_tag

if li_xh >= 4 then exit

loop until 1 <>1

lm_menu.popmenu( this.x + this.pointerx(), this.y + this.pointery() )

if not isnull(gvar.gs_menutag) or gvar.gs_menutag <>'' then

parent.triggerevent(gvar.gs_menutag)

end if

效果如图:

注:

在窗口中有自定义事件,名称为ue_ins,ue_edt等等

parent.triggerevent(gvar.gs_menutag)一句,其实就是触发对应的事件,达到动态处理菜单的clicked的效果

之前看到的参考资料中是动态创建菜单后,打开不同的窗口,本例中是动态执行某窗口中的不同事件.

如果菜单能像结构或其它对象一样,创建为对象级的,而不是全局级的我想可能要好处理一些吧.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11424911.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存