Delphi: PopUpMenu - PullRequest
       12

Delphi: PopUpMenu

2 голосов
/ 30 июля 2011

Есть список 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 Ответ

3 голосов
/ 30 июля 2011

Во-первых, ничего не делайте с событием мыши, потому что всплывающее меню может быть вызвано с клавиатуры.

На мой взгляд, лучший способ сделать это - обработать событие OnPopup. Если вы хотите, чтобы меню не появлялось, звоните Abort.

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