请问如何隐藏popupmenu菜单?就像windows里的浮动菜单一样

解决方案 »

  1.   

    什么意思?
    不让它出现?
    让它的所属控件的PopupMenu为空不就行了
      

  2.   

    这个问题我以前也遇到过,确实是这样。原因是托盘消息处理有问题。
    不知道你用的是什么方法实现的,这里给出我在控件中的方法。其中,有一句代码很关键,就是解决这个问题的。可以作为参考。procedure TMyTrayIcon.wndproc(var msg:Tmessage);
    var p:Tpoint;
    begin
       with msg do begin
            if (msg = WM_TRAYICON) then begin
               case lParam of
                    WM_LBUTTONDBLCLK   : if assigned (FOnDblClick) then FOnDblClick(self);
                    WM_LBUTTONUP       : if assigned(FOnClick)then FOnClick(self);
                    WM_RBUTTONUP       : if assigned(popupmenu) then begin
                                            SetForegroundWindow(fWindowHandle);//关键是这一句,缺少了就没人管菜单了:)
                                            GetCursorPos(p);
                                            popupmenu.Popup(p.x,p.y);
                                         end;
               end;
            end
            else Result := DefWindowProc(FWindowHandle, Msg, wParam, lParam);
       end;
    end;
      

  3.   

    fWindowHandle:是干什么的,我怎么编译通不过?
      

  4.   

    var
      fWindowHandle : HWND;
    ...
      FWindowHandle := AllocateHWnd( wndproc );