德尔福:PopUpMenu

时间:2011-07-29 21:30:55

标签: delphi popupmenu

有一个列表View + a PopUpMenu。我需要在物品存在时出现PopUpMenu。 0项时不得出现菜单。

这个近似代码是否合适(可以用作基础)?

procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var P: TPoint;
begin
  P:=GetClientOrigin;
  if Button = mbRight then
     PopupMenu1.Popup(X+P.X+StringGrid1.Left, Y+P.Y+StringGrid1.Top);
end;

还有其他方法吗?

感谢!!!

1 个答案:

答案 0 :(得分:3)

首先,不要对鼠标事件做任何事情,因为可以从键盘调用弹出菜单。

在我看来,执行此操作的最佳方法是处理OnPopup事件。如果您不想显示菜单,请拨打Abort

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
  if SomeCondition then
    Abort;
end;