2

有一个列表视图 + 一个 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;

还有其他方法吗?

谢谢!!!

4

1 回答 1

4

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

在我看来,最好的方法是处理OnPopup事件。如果您希望菜单不出现调用Abort.

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
  if SomeCondition then
    Abort;
end;
于 2011-07-29T21:36:49.107 回答