CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  Windows SDK/API

关于动态右键菜单创建的问题?求方法!

楼主Fow(含笑半步颠)2004-09-03 19:55:47 在 C++ Builder / Windows SDK/API 提问

我在Form上new了(动态创建)很多的Image对应每一个Image的右键菜单中的操作均不同,我就想问,如果我将右键菜单中的操作均为例如Do的操作而具体执行时,视Image不同而不同如何解决?关键是如何确定我右键选中的Image? 问题点数:0、回复次数:10Top

1 楼Bensoon(Bensoon)回复于 2004-09-05 00:39:30 得分 0

个人给你提供一个思路,不知道我理解的意思是不是正确!  
   
  你可以做一张表呀,然后在这张表里把Image的位置和菜单里要显示的操作一一对应,而右键菜单只做一个,而这个菜单把所有的操作都写好,然后判断一下是哪个Image(通过位置),然后再来决定这个菜单里哪些项目显示(查你先定好的表格),这样不就解决了!  
   
  表达能力有限,也不知道我的意思你能不能理解,也或许我理解错了你的意思!只是说一个思路而已   !Top

2 楼Lonelywolf1899(プログラマ)回复于 2004-09-06 13:15:22 得分 0

给每个Image做不同的PopMenuTop

3 楼ccrun(老妖)(www.ccrun.com)回复于 2004-09-06 13:52:29 得分 0

在MenuItem的Click事件中,通过Sender来判断来自哪个Image,简单的方法就是给每个Image分配不同的Tag,以Tag作分别.Top

4 楼JetKingLau(时差)(亦远亦近)(静坐常思已过 闲谈勿论人非 …………)回复于 2004-09-08 11:47:08 得分 0

老妖你搞错了吧?!偶认为:当用户单击   MenuItem1   时将触发   OnClick   事件,这时   MenuItem1Click(TObject   *Sender)   函数的   Sender   参数即是   MenuItem1   本身,除非是由用户自己在代码中引用   MenuItem1Click   的函数,Sender   才是其它的对象。  
   
  偶觉得,应该使用   PopupMenu1->PopupComponent,它是指用户在哪个组件按下了右键,  
  if(   PopupMenu1->PopupComponent->ClassNameIs("TImage")   )   {  
  TImage   *img   =   (TImage*)PopupMenu1->PopupComponent;  
          switch(   img->Tag   )   {  
                  case   0:  
                          //......  
                          break;  
                  default:  
                          break;  
          }  
  }Top

5 楼showjoy(最后一块钱)回复于 2005-01-27 11:46:21 得分 0

JetKingLau(时差)(★亦远亦近★)   说得对。同理,如果有三个按钮,使用相同的PopUpMenu1,  
  若想知道是哪个按钮上的popup,应:  
  if(   PopupMenu1->PopupComponent->ClassNameIs("TButton")){  
  switch(   ((TButton*)PopupMenu1->PopupComponent)->Tag   )   {  
                  case   1:  
                          //第一个按钮  
                          break;  
                  case   2:  
                          //第二个按钮  
                          break;  
                  case   3:  
                          //第三个按钮  
                          break;  
                  default:  
                          //  
                          break;  
          }  
  当然按钮的tag分别置为1,2,3。具体请看PopupComponent的帮助Top

6 楼3996906(我只是建议,不提供最后的解决方法)回复于 2005-01-27 11:52:38 得分 0

老妖没弄错哦~~~~~~~~~这样是可以的,偶做过啦~~~~~~~:)Top

7 楼flytigerboy(天涯浪人)回复于 2005-01-28 11:39:25 得分 0

Read   and   Learn.Top

8 楼oldtab(汇铁)回复于 2005-01-28 19:58:38 得分 0

ccrun(老妖)(www.ccrun.com)   的方法是可行的。  
  进一步,还可不用Tag。  
   
  ((TMenuItem*)(((TMenuItem*)Sender)->Parent)->Name         //1式  
  ((TMenuItem*)Sender)->Caption                                                 //2式  
  1式,可用来区分哪个Image。  
  2式,可用来区分哪个菜单项。Top

9 楼oldtab(汇铁)回复于 2005-01-28 20:00:37 得分 0

又错了。应是:  
   
  ((TImage*)(((TMenuItem*)Sender)->Parent)->Name         //1式  
   
  Top

10 楼showjoy(最后一块钱)回复于 2005-02-04 13:17:10 得分 0

又学了一招Top

相关问题

  • 【【【【【【【【 怎样响应 动态创建 的 右键弹出菜单 】】】】】】】】】
  • 各位高手,如何动态右键创建菜单
  • 右键弹出菜单,如何动态创建菜单的下一级子菜单的内容?
  • 接着求教,如何为动态创建的元素添加右键菜单
  • MDI中如何创建右键菜单
  • 动态创建菜单???
  • 动态创建菜单
  • 动态 菜单 创建
  • 右键弹出菜单的菜单项不能动态改变?
  • 右键弹出菜单问题(API动态创建,支持多国语言),2000/XP正常,98下显示不正常

关键词

  • tag
  • 用户
  • popupcomponent
  • 右键
  • 菜单
  • popupmenu
  • 按钮
  • 老妖
  • timage
  • tmenuitem

得分解答快速导航

  • 帖主:Fow

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo