弹出菜单弹出可以知道,但要怎么知道它是否关闭了???

解决方案 »

  1.   

    这个嘛,我也不知道,
    你加个条件判断,是不是show或者visible=true
    之类的应该可以吧
      

  2.   

    BORLAND 没有提供这种事件和属性
    BORLAND一般以微软的制作为标准,在MSDN中无此讲法
    也很少人做菜单收回的事件的需要!
      

  3.   

    办法还是有的,我试了一下:
    简单创建一个新的组件TPopupMenuPro,下面是一些关键代码:
    type TPopupMenuPro = class(TPopupMenu)
      FPopupped: Boolean;
      public
        constructor Create(AOwner: TComponent); override;
        procedure Popup(X, Y: Integer); override;
      property
        Popupped: Boolean read FPopupped;
      end;implementationconstructor TPopupMenuPro.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      FPopupped := False;
    end;procedure TPopupMenuPro.Popup(X, Y: Integer);
    begin
      FPopupped := True;
      inherited Popup(X, Y);
      FPopupped := False;
    end;end.然后,注册这个组件,使用TPopupMenuPro代替TPopupMenu,检测其Popupped属性即可知道是否弹出菜单
      

  4.   

    另外,改正一下:最好将Popupped改为Public属性,因为在Delphi IDE里面,Popupped是没有意义的。
      

  5.   

    用findWindow()查找一下,该窗口是否存在,若不存在,侧关闭
      

  6.   

    给菜单编个号码
    Function NotClose(num:Integer):Boolean;
    begin
       try
          Result:= false;
          if (curFrameNum=num) then
             exit;      Result := True;
          if (curFrameNum=0) then
             exit;      curFrame.Free;
          curFrameNum:=0;
       except
          on e:Exception do
             if Application.MessageBox('发生异常,是否显示异常信息?','错误', mb_IconWarning + mb_YesNo) = mrYes then
                Application.MessageBox( pchar(E.message),'错误信息', mb_IconWarning + mb_Ok);
       end;
    end;