谢谢skimwater(掠水惊鸿),能不能快一点!

解决方案 »

  1.   

    首先,恢复它原来的系统菜单。用修改菜单的办法让它为我所用。
    下面以修改一个菜单项为例:
    在窗体的private处声明:
    const
      ItemID=100;
    在Form的Create事件里,使用下面语句:
    begin
      ModifyMenu(GetSystemMenu(handle,false),1,MF_BYPOSITION,ItemID,'修改的菜单项');end;下面写一个函数处理点击该菜单项的事件:
      在Form的private里加一个过程:
      procedure MsgHandle(var msg:TMsg;var handled:boolean);
    然后实现它:procedure TForm1.MsgHandle(var msg:TMsg;var handled:boolean);
    begin
      handled:=false;
      if (msg.message=wm_syscommand) and (msg.wparam=ItemID) then
      begin
        //做你想做的事响应该菜单的点击事件。
        handled:=true;
      end;
    end;最后在你的Form的Create事件里加上:
      Application.OnMessage:=Form1.MsgHandle;运行即可。
      

  2.   

    不好意思,skimwater(掠水惊鸿)你没有看懂我的意思,我现在无法弹出系统菜单,并不是要在系统菜单中增加!
    哈哈,不过我还是很感谢你!
      

  3.   

    我指的是我做的Form,BorderStyle设为了bsNone,所以看不到系统菜单,但是我现在想在form上面点击右键就可以弹出菜单,而这个菜单就是系统菜单。并不是我要追加东西进去!
      

  4.   

    选择Form上的一个区域,处理消息,在鼠标右击时弹出菜单,菜单就做的跟系统的一样。
      

  5.   

    在你的窗体的mousedown事件里写如下代码:
    var
      h:HMENU;
      p:TPoint;
    begin
      if button=mbright then 
      begin
        p.x:=X;
        p.y:=Y;
        p:=clienttoscreen(p);
        h:=GetSystemMenu(handle,false);
        TrackPopupMenuEx(h,TPM_VERTICAL,p.x,p.y,handle,nil);
      end;
    end;
    ————别告诉你要的又不是这个,否则,我
      

  6.   

    skimwater(掠水惊鸿) 
    非常感谢你!我试过了,就是这样,但是我有个问题,他产生了这个菜单,而我如何增加每个菜单项的click事件,因为现在Click任何一个菜单项都没有反应!
      

  7.   

    谢谢你,如果你有更好的方法,写信给我可以了,或者通过OICQ!非常感谢你!
    [email protected]
    350568分数先给你了!