弹出菜单

fly923 2004-07-21 09:47:54
如何实现选中LISTBOX中的某一行后,单击鼠标右键弹出相应的菜单,进行选择.各菜单中的内容一样,产生的动作不同.
...全文
103 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanscar 2004-07-22
  • 打赏
  • 举报
回复
这不结了?你定制好一个POPUP MENU,然后在MENU项的CLICK事件里面根据当前选择的LISTBOX行确定触发的事件
比如说
点击MENU的N1,就作判断,判断当前LISTBOX的ITEMINDEX,然后写一个CASE语句。。。。我都懒得再写的更详细了
fly923 2004-07-21
  • 打赏
  • 举报
回复
不能对某一行进行操作啊?
pandacarol 2004-07-21
  • 打赏
  • 举报
回复
popup menu是对某一个控件而言的,也就是说你定制了popupmenu就是对整个listbox有效的而不是listbox的某一行有效
fly923 2004-07-21
  • 打赏
  • 举报
回复
LISTBOX有多行的话POPUPMENU是不是要定制多个了?能否写具体点,没用过那个控件
yuanscar 2004-07-21
  • 打赏
  • 举报
回复
不是有POPUP MENU吗?先定制一个,响应右键事件弹出,如果要根据ITEM的内容确定菜单的内容就在响应右键的时间里初始化你定制的POPUP MENU。再在菜单里根据你的初始化处理事件。呵呵,给分!!!
fly923 2004-07-21
  • 打赏
  • 举报
回复
我的意思是不同的行弹出菜单的内容是一样的,但是产生的动作是不一样的,比如同样是删除,但是删除的不是一个对象
kuanker 2004-07-21
  • 打赏
  • 举报
回复
我上面的程序是对listbox某行起效的,楼主可以自己试试
kuanker 2004-07-21
  • 打赏
  • 举报
回复
在菜单中我假设它的动作是新建,删除,修改,事件定义如下
procedure TForm1.N1Click(Sender: TObject); //新建
var inputstr:string;
begin
InputStr:= InputBox('输入','请输入新建内容','');
if trim(inputstr)<>'' then
listbox1.Items.Add(inputstr);
listbox1.Refresh;
end;

procedure TForm1.N2Click(Sender: TObject); //删除
begin
listbox1.Items.Delete(listbox1.ItemIndex);
listbox1.Refresh;
end;

procedure TForm1.N3Click(Sender: TObject); //修改
var inputstr:string;
begin
InputStr:= InputBox('输入','请输入修改内容',listbox1.Items.ValueFromIndex[listbox1.ItemIndex]);
listbox1.Items.Delete(listbox1.ItemIndex);
if trim(inputstr)<>'' then
listbox1.Items.Add(inputstr);
listbox1.Refresh;
end;

end.

至于属性设置如上我说的,我想楼主应该清楚了吧
yinweixian 2004-07-21
  • 打赏
  • 举报
回复
popup menu是对某一个控件而言的,也就是说你定制了popupmenu就是对整个listbox有效的而不是listbox的某一行有效
kuanker 2004-07-21
  • 打赏
  • 举报
回复
to 楼主:
各菜单中的内容一样,产生的动作不同.
能不能说清楚一点?
解决方法:新建一个popup menu控件popupmenu1,点住listbox,设置属性popupmenu选择为popupmenu1即可。具体的菜单内容自己填写,事件也自己定义即可。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧