Delphi; Добавить поддержку PopupMenu в элемент управления без источника

Вам нужно на самом деле new до массива, а не просто , используя фигурные скобки:

new Feed() { Names = new string[] { "Cluj Approach", "Cluj Tower" } //...

Вы можете максимально упростить его:

new Feed() { Names = new [] { "Cluj Approach", "Cluj Tower" } //...

и имеют тип, предполагаемый.

2
задан Aladdin 16 January 2019 в 22:23
поделиться

1 ответ

Как указано в документации для WM_CONTEXTMENU, когда дочернее окно не обрабатывает сообщение, процедура окна по умолчанию отправляет сообщение в родительское окно.

Таким образом, вы можете отобразить всплывающее меню, обработав сообщение на родительском элементе управления. В приведенном ниже примере отображается «PopupMenu1» для «Panel1», помещенной в форму, вам может потребоваться настроить ее, если элемент управления не размещен непосредственно в форме.

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    Panel1: TPanel;
    ..
  protected
    procedure WMContextMenu(var Message: TWMContextMenu);
      message WM_CONTEXTMENU;
  end;

...

procedure TForm1.WMContextMenu(var Message: TWMContextMenu);
var
  Pt: TPoint;
  Control: TControl;
begin
  Pt := SmallPointToPoint(Message.Pos);
  Control := ControlAtPos(ScreenToClient(Pt), False, True, True);
  if Control = Panel1 then begin
    PopupMenu1.PopupComponent := Panel1;
    PopupMenu1.Popup(Pt.X, Pt.Y);
    Message.Result := 1;
  end;
  inherited;
end;
0
ответ дан Sertac Akyuz 16 January 2019 в 22:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: