通用右键弹出菜单/及调用代码

菜单:

$PBExportHeader$m_compopup.srm $PBExportComments$通用右键弹出菜单 common popup menu.Create by lenya on 2010/9/30 forward global type m_compopup from menu end type type m_item1 from menu within m_compopup end type type m_item2 from menu within m_compopup end type type m_item3 from menu within m_compopup end type type m_item4 from menu within m_compopup end type type m_item5 from menu within m_compopup end type type m_item6 from menu within m_compopup end type type m_item7 from menu within m_compopup end type type m_item8 from menu within m_compopup end type type m_item9 from menu within m_compopup end type type m_item10 from menu within m_compopup end type type m_item11 from menu within m_compopup end type type m_item12 from menu within m_compopup end type type m_item13 from menu within m_compopup end type type m_item14 from menu within m_compopup end type type m_item15 from menu within m_compopup end type global type m_compopup from menu m_item1 m_item1 m_item2 m_item2 m_item3 m_item3 m_item4 m_item4 m_item5 m_item5 m_item6 m_item6 m_item7 m_item7 m_item8 m_item8 m_item9 m_item9 m_item10 m_item10 m_item11 m_item11 m_item12 m_item12 m_item13 m_item13 m_item14 m_item14 m_item15 m_item15 end type end forward type items from structure string sname string stext string sevent end type global type m_compopup from menu m_item1 m_item1 m_item2 m_item2 m_item3 m_item3 m_item4 m_item4 m_item5 m_item5 m_item6 m_item6 m_item7 m_item7 m_item8 m_item8 m_item9 m_item9 m_item10 m_item10 m_item11 m_item11 m_item12 m_item12 m_item13 m_item13 m_item14 m_item14 m_item15 m_item15 end type global m_compopup m_compopup type variables PRIVATE: CONSTANT UINT ITEMCOUNT = 15 //菜单总项数目. graphicobject igo_parent //弹出菜单所属的parentwindow end variables forward prototypes public function integer setitemenabled (unsignedinteger ai_itemorder, boolean ab_enable) public function integer setitemvisible (unsignedinteger ai_itemorder, boolean ab_visible) public function integer setitemchecked (unsignedinteger ai_itemorder, boolean ab_checked) public function integer initmenu (graphicobject ago_parent, string as_items) public function integer initmenu (graphicobject ago_parent, string as_items, string as_eventnames) end prototypes public function integer setitemenabled (unsignedinteger ai_itemorder, boolean ab_enable);/ // // Function: public setitemenabled(unsignedinteger ai_itemorder, boolean ab_enable) returns integer // // Purpose: 设置菜单项Enabled. // // Args: unsignedinteger ai_itemorder 菜单序号 // boolean ab_enable Enabled = ab_enable // // Return: 成功,返回1;出错,返回-1. // // Log: // // Create by lenya on 2010/10/6 // /// if ai_itemorder > ITEMCOUNT then return -1 This.item[ai_itemorder].Enabled = ab_enable return 1 end function public function integer setitemvisible (unsignedinteger ai_itemorder, boolean ab_visible);/ // // Function: public setitemvisible(unsignedinteger ai_itemorder, boolean ab_visible) returns integer // // Purpose: 设置菜单项Enabled. // // Args: unsignedinteger ai_itemorder 菜单序号 // boolean ab_visible Visible = ab_visible // // Return: 成功,返回1;出错,返回-1. // // Log: // // Create by lenya on 2010/10/6 // /// if ai_itemorder > ITEMCOUNT then return -1 This.item[ai_itemorder].Visible = ab_visible return 1 end function public function integer setitemchecked (unsignedinteger ai_itemorder, boolean ab_checked);/ // // Function: public setitemchecked(unsignedinteger ai_itemorder, boolean ab_checked) returns integer // // Purpose: 设置菜单项Checked or UnChecked. // // Args: unsignedinteger ai_itemorder 菜单序号 // boolean ab_checked true 为Checked, false 为UnChecked // // Return: 成功,返回1;出错,返回-1. // // Log: // // Create by lenya on 2010/10/6 // /// if ai_itemorder > ITEMCOUNT then return -1 This.item[ai_itemorder].Checked = ab_checked return 1 end function public function integer initmenu (graphicobject ago_parent, string as_items);/ // // Function: public initmenu(graphicobject ago_parent, string as_items) returns integer // // Purpose: 通用右键菜单的初始化,包括显示Text,EventName,Enabled,Visible. // // Args: graphicobject ago_parent //菜单依附的图形对象 // string as_items //Text{tag}|Text{tag}|Text{tag}的格式, // //其中Text显示菜单文本,Tag为要触发的事件名称. // // Return: 成功,返回1;出错,返回-1. // // Log: // // Create by lenya on 2010/10/6 // /// if not isvalid(ago_parent) then return -1 igo_parent = ago_parent if isnull(as_items) or len(as_items) = 0 then return -1 UINT itemnum, curitemcnt UINT pos_start, pos_end, pos_len string ls_items[] n_cst_string lo_string curitemcnt = lo_string.of_parsetoarray(as_items,"|",ls_items[]) if curitemcnt > 0 and curitemcnt <= ITEMCOUNT then for itemnum=1 to curitemcnt //设置菜单显示及事件名称关联,如:"全选{ue_all}|全否{ue_nall}" pos_start = Pos(ls_items[itemnum], "{") pos_end = Pos(ls_items[itemnum], "}") if pos_end - pos_start > 0 then This.item[itemnum].Tag = Mid(ls_items[itemnum], pos_start + 1, pos_end - pos_start - 1) This.item[itemnum].Text = Replace(ls_items[itemnum], pos_start, pos_end - pos_start + 1, "") else This.item[itemnum].Text = ls_items[itemnum] end if This.item[itemnum].Visible = True This.item[itemnum].Enabled = True next for itemnum=curitemcnt+1 to ITEMCOUNT //设置不可用项 This.item[itemnum].Visible = FALSE This.item[itemnum].Enabled = FALSE next else return -1 end if return 1 end function public function integer initmenu (graphicobject ago_parent, string as_items, string as_eventnames);/ // // Function: public initmenu(graphicobject ago_parent, string as_items) returns integer // // Purpose: 通用右键菜单的初始化,包括显示Text,EventName,Enabled,Visible. // // Args: graphicobject ago_parent //菜单依附的图形对象 // string as_items //Text|Text|Text的格式,其中Text显示菜单文本 // String as_eventnames//格式:eventname|eventname|,菜单项要触发的事件名称. // // Return: 成功,返回1;出错,返回-1. // // Log: // // Create by lenya on 2010/10/6 // /// if not isvalid(ago_parent) then return -1 igo_parent = ago_parent if isnull(as_items) or len(as_items) = 0 then return -1 UINT itemnum, curitemcnt, curevencnt string ls_items[] String ls_eventname[] n_cst_string lo_string curitemcnt = lo_string.of_parsetoarray(as_items,"|",ls_items[]) curevencnt = lo_string.of_parsetoarray(as_eventnames,"|",ls_eventname[]) if curitemcnt > 0 and curitemcnt <= ITEMCOUNT then for itemnum=1 to curitemcnt //设置菜单显示文本及事件名称 This.item[itemnum].Text = ls_items[itemnum] if curevencnt >= itemnum then This.item[itemnum].Tag = ls_eventname[itemnum] else This.item[itemnum].Tag = "ue_item"+string(itemnum) //设置默认事件名称,如"ue_item1" end if This.item[itemnum].Visible = True This.item[itemnum].Enabled = True next for itemnum=curitemcnt+1 to ITEMCOUNT //设置不可用项 This.item[itemnum].Visible = FALSE This.item[itemnum].Enabled = FALSE next else return -1 end if return 1 end function on m_compopup.create m_compopup=this call super::create this.text = "m_compopup" this.m_item1=create m_item1 this.m_item2=create m_item2 this.m_item3=create m_item3 this.m_item4=create m_item4 this.m_item5=create m_item5 this.m_item6=create m_item6 this.m_item7=create m_item7 this.m_item8=create m_item8 this.m_item9=create m_item9 this.m_item10=create m_item10 this.m_item11=create m_item11 this.m_item12=create m_item12 this.m_item13=create m_item13 this.m_item14=create m_item14 this.m_item15=create m_item15 this.Item[UpperBound(this.Item)+1]=this.m_item1 this.Item[UpperBound(this.Item)+1]=this.m_item2 this.Item[UpperBound(this.Item)+1]=this.m_item3 this.Item[UpperBound(this.Item)+1]=this.m_item4 this.Item[UpperBound(this.Item)+1]=this.m_item5 this.Item[UpperBound(this.Item)+1]=this.m_item6 this.Item[UpperBound(this.Item)+1]=this.m_item7 this.Item[UpperBound(this.Item)+1]=this.m_item8 this.Item[UpperBound(this.Item)+1]=this.m_item9 this.Item[UpperBound(this.Item)+1]=this.m_item10 this.Item[UpperBound(this.Item)+1]=this.m_item11 this.Item[UpperBound(this.Item)+1]=this.m_item12 this.Item[UpperBound(this.Item)+1]=this.m_item13 this.Item[UpperBound(this.Item)+1]=this.m_item14 this.Item[UpperBound(this.Item)+1]=this.m_item15 end on on m_compopup.destroy call super::destroy destroy(this.m_item1) destroy(this.m_item2) destroy(this.m_item3) destroy(this.m_item4) destroy(this.m_item5) destroy(this.m_item6) destroy(this.m_item7) destroy(this.m_item8) destroy(this.m_item9) destroy(this.m_item10) destroy(this.m_item11) destroy(this.m_item12) destroy(this.m_item13) destroy(this.m_item14) destroy(this.m_item15) end on type m_item1 from menu within m_compopup end type on m_item1.create call super::create this.tag = "event" this.visible = false this.text = "item1" end on on m_item1.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item2 from menu within m_compopup end type on m_item2.create call super::create this.tag = "event" this.visible = false this.text = "item2" end on on m_item2.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item3 from menu within m_compopup end type on m_item3.create call super::create this.tag = "event" this.visible = false this.text = "item3" end on on m_item3.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item4 from menu within m_compopup end type on m_item4.create call super::create this.tag = "event" this.visible = false this.text = "item4" end on on m_item4.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item5 from menu within m_compopup end type on m_item5.create call super::create this.tag = "event" this.visible = false this.text = "item5" end on on m_item5.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item6 from menu within m_compopup end type on m_item6.create call super::create this.tag = "event" this.visible = false this.text = "item6" end on on m_item6.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item7 from menu within m_compopup end type on m_item7.create call super::create this.tag = "event" this.visible = false this.text = "item7" end on on m_item7.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item8 from menu within m_compopup end type on m_item8.create call super::create this.tag = "event" this.visible = false this.text = "item8" end on on m_item8.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item9 from menu within m_compopup end type on m_item9.create call super::create this.tag = "event" this.visible = false this.text = "item9" end on on m_item9.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item10 from menu within m_compopup end type on m_item10.create call super::create this.tag = "event" this.visible = false this.text = "item10" end on on m_item10.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item11 from menu within m_compopup end type on m_item11.create call super::create this.tag = "event" this.visible = false this.text = "item11" end on on m_item11.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item12 from menu within m_compopup end type on m_item12.create call super::create this.tag = "event" this.visible = false this.text = "item12" end on on m_item12.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item13 from menu within m_compopup end type on m_item13.create call super::create this.tag = "event" this.visible = false this.text = "item13" end on on m_item13.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item14 from menu within m_compopup end type on m_item14.create call super::create this.tag = "event" this.visible = false this.text = "item14" end on on m_item14.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(Tag) end event type m_item15 from menu within m_compopup end type on m_item15.create call super::create this.tag = "event" this.visible = false this.text = "item15" end on on m_item15.destroy call super::destroy end on event clicked;igo_parent.TriggerEvent(tag) end event

调用:

string ls_Band ls_Band = GetBandAtPointer() if Pos(ls_Band,"detail")>0 or Pos(ls_Band,"background")>0 then //只有在"数据"区域才弹出右键 m_compopup lm_pop if GetRow() <> Row Then SetRow(row) if GetColumn() <> GetClickedColumn() Then SetColumn(GetClickedColumn()) lm_pop = Create m_compopup if 1 = lm_pop.initmenu(This,"复制(&C)|-|查看所有记录|-|撤销(&U)", + & "ue_copy|-|ue_ret_bigmk|-|ue_cancel") then lm_pop.setitemenabled(1,Len(This.SelectedText())>0)//设置"复制"Enabled属性. lm_pop.setitemenabled(5,m_third.m_handle.m_unto.Enabled)//设置"撤销"Enabled属性. lm_pop.PopMenu(w_main.pointerx(),w_main.pointerY()) end if destroy lm_pop end if

转载于:https://www.cnblogs.com/lenya/archive/2010/11/05/3706978.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值