有一个列表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;
还有其他方法吗?
感谢!!!
答案 0 :(得分:3)
首先,不要对鼠标事件做任何事情,因为可以从键盘调用弹出菜单。
在我看来,执行此操作的最佳方法是处理OnPopup
事件。如果您不想显示菜单,请拨打Abort
。
procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
if SomeCondition then
Abort;
end;