



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
用PB做一个通用右键菜单一、 创建弹出菜单m_popup 创建一个菜单m_popup,定义菜单条m_main,其下有十五个菜单项,分别命名为m_item1,m_item2,m_item15,各项的显示文本(text)分别为item1,item2, item15; 为m_popup菜单定义一个Powerobject类型的Instance变量:Anyobject 脚本为: Powerobject Anyobject 给m_item1,m_item2, m_item15各菜单项的Clicked事件下分别输入脚本: Anyobject.triggerevent(ue_item1) /m_item1的clicked事件Anyobject.triggerevent(ue_item2) Anyobject.triggerevent(ue_item15)- 4、 定义几个菜单函数: - 1) setmenuitem(string itemstring),返回值为Null。 - 参数Itemstring是由多个子串组成的。各个子串间用“|”间隔,每个子串为一个菜单项的显示文本(text)。 - 该函数功能是把itemstring分解为多个子串,并把子串赋给相应菜单项的text。脚本如下: int itempos,itemorder=1,istring currentitemif len(itemstring)=0 then returnitempos=pos(itemstring,|)DO WHILE itempos0 / itempos为间隔符|的位置currentitem=left(itemstring,itempos -1) /取出子串itemstring=mid(itemstring, itempos+1)this.m_main.itemitemorder.text=currentitem itempos=pos(itemstring,|)itemorder+LOOP this.m_main.itemitemorder.text=itemstringfor i=1 to itemorder this.m_main.itemi.visible=truethis.m_main.itemi.enabled=trueend if for i=itemorder+1 to 15this.m_main.itemi.visible=falsenext 2)setitemdisable(integer itemorder) 返回值Null。该函数把第itemorder菜单项置灰(disable)。脚本如下:if itemorder15 then returnthis.m_main.itemitemorder.enabled=false3)popupmenu(integer x, integer y) 返回值Null。该函数弹出菜单条m_main。脚本如下:this.m_main.popmenu(x,y)二、 rbuttondown事件激发弹出菜单m_popup - 至此,我们就可以在窗口中任意对象如DataWindow、 Picture、 SingleLineEdit、 ListBox、 PictureListBox、 DropDownPictureListBox、 MultiLineEdit、 ListView、 TreeView等的rbuttondown事件中写脚本调用m_popup的函数来实现右键单击弹出一个菜单。下面以数据窗口dw_1为例,在其rbuttondown事件下写入脚本,使得右击dw_1 可弹出菜单:刷新/插入/删除/修改。步骤如下: 1、事先给窗口定义一个m_popup 型instance变量om_1: m_popup om_12、dw_1的rbuttondown事件脚本: if not isvalid(om_1) then om_1= CREATE m_popup end if /把菜单的anyobject指向被右击的对象(dw_1)om_1.anyobject=this om_1.setmenuitem(刷新|插入|删除|修改)/可在此调用om_1.setitemdisable(itemorder)函数disable某 菜单项。om_1.popupmenu(this.x+this.pointerx(), this.y+this.pointery()3、 给dw_1定义用户事件ue_item1、ue_item2、ue_item3 及 ue_item4。事件ue_item1脚本: dw_1.retrieve()事件ue_item2脚本:long newrownewrow=dw_1.insertrow(0)dw_1.scrolltorow(newrow)事件ue_item3脚本:dw_1.deleterow(0)事件ue_item4脚本:dw_1.update()- 这样,只要用户单击dw_1弹出的右键菜单,就可完成对dw_1的插入、删除、修改等功能。 三、 推广为全程函数 - 如果应用中有许多地方要用此功能,我们可以把dw_1的rbuttondown事件脚本改造成一个全程函数。 - 1、将变量om_1定义为global变量: - m_popup om_1 - 2、定义一个全程函数 - pupmenu(powerobject sender,string itemstring,integer x,integer y) 返回值Null。其中参数sender为被右击的对象,itemstring为弹出菜单的菜单项字符串,x、y为菜单弹出的坐标位置。脚本如下:if not isvalid(om_1) thenom_1= CREATE m_popupend if om_1.anyobject=sender om_1.setmenuitem(itemstring) sender.triggerevent(ue_beforepop) /激活sender用户事件。 om_1.popupmenu(x,y) 这样,上述dw_1的rbuttondown事件脚本就可改写为: string items=刷新|插入|删除|修改 popmenu(this, items ,this.x+this.pointerx(), this.y+this.pointery()注意:在MDI 应用中,popmenu()函数需要改为:popmenu(this, items ,w_frame.pointerx(),w_frame.pointery()其中w_frame为MDI主窗口名。- 在函数popmenu中,又激活了被右击对象的ue_beforepop用户事件。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全执法试题及答案
- 深处种菱浅种稻-《汽车数据出境安全指引(2025版)》(征求意见稿)的准确理解与适用
- 安全施工管理试题及答案
- 血液净化设备市场国内外竞争格局对比研究报告
- 安全生产教育试题及答案
- 2025年消费金融在下沉市场的地域差异与政策影响报告001
- 2025年农业灌溉用水管理:水资源保护与高效利用技术报告
- 2025年五金制品行业跨境电商物流与仓储解决方案报告
- 助残主题班会课件
- 制定班规主题班会课件
- 国开(内蒙古)2024年《家庭社会工作》形考1-3终考答案
- 华佗古本五禽戏智慧树知到期末考试答案章节答案2024年安徽中医药大学
- 齐鲁文化智慧树知到期末考试答案2024年
- 小班语言故事《喇叭花电话》课件
- 眼科视光中心可行性方案
- 台球馆火灾危险性分析报告
- JCT890-2017 蒸压加气混凝土墙体专用砂浆
- 汽车吊、随车吊起重吊装施工方案
- 销售总监职业规划书
- 民国时期服饰简论
- 教学设备投标方案(完整技术标)
评论
0/150
提交评论