如何得知用户点击popmenu的哪一个菜单项?(50分)

  • 主题发起人 主题发起人 nuke
  • 开始时间 开始时间
N

nuke

Unregistered / Unconfirmed
GUEST, unregistred user!
目的是这样,用户一次选定多个文件,每个文件在popmenu中动态生成一个
菜单项,用户可以通过选择菜单项来打开相应的文件。
所有的菜单项的onclick指向一个open()函数,现在要在open里判断到底用户
单击了哪个菜单项然后去打开相应文件,该如何做呢??
 
既然每次是动态生成一个菜单项,可不可以考虑在Caption上做文章,把文件名写上.
就用Caption来打开文件.
 
哈哈我来拿分,方法如下:
第一步:
每次选定一个文件时,动态的向TStringList *FileList;
中写文件名,然后动态的生成PopupMenu.
第二步:
void __fastcall TYourClass::OnClick(TObject *Sender)
{
用((TMenuItem *)Sender)->Caption,查找相对于*FileList种的文件名,
就知道用户选中了哪一个文件!!!!!

}

 
咦? caption中已经是文件名了, 还要tstringlist干吗?
如果不想在menuitem.caption中显示带详细路径的文件名(只想显示文件名), 可以用
dancingagain的方法. 部分修改一下:
在menuitem.tag中保存stringlist的index. 访问时根据tag到stringlist中找相应的文件名.
 
当然还可以利用tag,生成菜单项的时候利用记数生成不同的TAG,
在ONCLICK中就可以利用TAG区别了((Self as TMenuItem).tag)
 
自己搞出来了。
和dancingAgain以及another_eYes得答案比较接近
如下
filename:=filelist.strings[popmenu.items.indexof(tmenuitem(sender))];
filelist存着文件名
呵呵
不用tag的说.
:)
 
后退
顶部