如何实现选中LISTBOX中的某一行后,单击鼠标右键弹出相应的菜单,进行选择.各菜单中的内容一样,产生的动作不同.

解决方案 »

  1.   

    不是有POPUP MENU吗?先定制一个,响应右键事件弹出,如果要根据ITEM的内容确定菜单的内容就在响应右键的时间里初始化你定制的POPUP MENU。再在菜单里根据你的初始化处理事件。呵呵,给分!!!
      

  2.   

    LISTBOX有多行的话POPUPMENU是不是要定制多个了?能否写具体点,没用过那个控件
      

  3.   

    popup menu是对某一个控件而言的,也就是说你定制了popupmenu就是对整个listbox有效的而不是listbox的某一行有效
      

  4.   

    to 楼主:
      各菜单中的内容一样,产生的动作不同.
    能不能说清楚一点?
    解决方法:新建一个popup menu控件popupmenu1,点住listbox,设置属性popupmenu选择为popupmenu1即可。具体的菜单内容自己填写,事件也自己定义即可。
      

  5.   

    popup menu是对某一个控件而言的,也就是说你定制了popupmenu就是对整个listbox有效的而不是listbox的某一行有效
      

  6.   

    在菜单中我假设它的动作是新建,删除,修改,事件定义如下
    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.至于属性设置如上我说的,我想楼主应该清楚了吧
      

  7.   

    我上面的程序是对listbox某行起效的,楼主可以自己试试
      

  8.   

    这不结了?你定制好一个POPUP MENU,然后在MENU项的CLICK事件里面根据当前选择的LISTBOX行确定触发的事件
    比如说
    点击MENU的N1,就作判断,判断当前LISTBOX的ITEMINDEX,然后写一个CASE语句。我都懒得再写的更详细了