下面是当鼠标进入按钮HongBtMouse让popup出来
procedure TFrmModel.HongBtMouseEnter(Sender: TObject);
begin
  hongpm.popup(mouse.CursorPos.X, mouse.CursorPos.Y);
end;
但我想在鼠标离开popup时,让popup消失,或是离开按钮时让popup消失

解决方案 »

  1.   

    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    var R:TRect;
        P:TPoint;
    begin
        R.Left:=button1.Left;
        R.Right:=button1.Left + button1.Width;
        R.Top:=button1.Top;
        R.Bottom:=button1.Top + button1.Height;
        if sender is tbutton then
        begin
            p.X:=button1.Left + X;
            P.Y:=button1.Top + Y;
        end
        else
        begin
            p.X:=X;
            P.Y:=Y;
        end;
        if PTinRect(R,P) then
           caption:='1111'  //改成你菜单的显示,visible:true
        else
           caption:='aaaa';//菜单消失。visble:false
    end;
    同时设置button1的onMouseMove为:FormMouseMove;
      

  2.   

    不是不行,当菜单出现时,把鼠标移到别的控件,所有mousemove事件都不会触发,除非单击别的控件
      

  3.   

    可以将别的控件的OnMouseMove也设置为FormMouseMove
      

  4.   

    问题是更本触发不了其它事件的ONMouseMove
      

  5.   

    PopMenue沒有一個方法控制隱藏,
    而隻要單擊它自己的菜單項或其他控件它就不見了。
    我曾在其他控件中樣試過調用,
    TForm1.mnuExitClick(Self);
    哎,也沒有效果。
      

  6.   

    to楼主:前些天好像也有人问这个问题,是不是就是你啊~听了你的说法,也是存在一个问题~我看你干脆这样干算了:你只写button的mousemove事件就可以了~解决的办法就是:当鼠标移动到button的边缘的时候,就认为鼠标已经移出button了~呵呵~怎么样?这样就可以了吧~如果采纳我的方法,就记得给分哦~呵呵~
      

  7.   

    在mousemove事件写入hongpm.popup(mouse.CursorPos.X, mouse.CursorPos.Y);
    , 更本触发不了
      

  8.   

    哎~~~~~~~~
    我试了一下我的方法,也行不通~因为当menu显示以后,其他任何事件都触发不了~
    楼主,我看你还是不要用popupmenu了~
    自己做一个弹出窗体好一些,而且自己做一个也相当简单,也就是一个没有边框的小窗体上面放几个lable控件,写他的简单单机代码而已,相当简单的~