如何在一个文本框中,点击鼠标的左键时,触发它的快捷菜单???
设置 self.PopupMenu1.TrackButton:=tbLeftButton 时,好像对文本框无效哦。

解决方案 »

  1.   

    设置PopupMenu属性,只能使其在鼠标右键按下时弹出菜单(和通常情况一样)
    如果要在左键按下时弹出菜单,在它的OnMouseDown中写:
    procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var CurPt: TPoint;
    begin
     if Button=mbLeft then//如果是左键
     begin
      CurPt.X:=X;
      CurPt.Y:=Y;
      //窗口坐标转换为屏幕坐标
      CurPt:=Edit1.ClientToScreen(CurPt);
      //弹出菜单,是以屏幕坐标为准的
      PopupMenu1.Popup(CurPt.X,CurPt.Y);
     end;
    end;
      

  2.   

    如果用右键的话,你可以直接指定edit的popupmenu属性
    如果你用左键的话,你需要自己在edit1的onclick事情中写代码:opupmenu1.popup(edi1.left,edit1.top);
    // 当然,上面代码的写法定位是有问题的,你可以得到鼠标当前的位置再弹出快捷菜单