Дважды щелкните правой кнопкой мыши, чтобы открыть PopUpMenu с TListView! - PullRequest
1 голос
/ 08 марта 2010

У меня есть TListView и TPopupMenu, и я хочу показать контекстное меню, когда я щелкаю правой кнопкой мыши на TListItem. Я попробовал «AutoPopup», назначив компонент, но при щелчке правой кнопкой мыши отображается только PopupMenu, а нужный элемент не выбран. Поэтому я попытался использовать «OnMouseDown», но нам нужно щелкнуть и щелкнуть еще раз, чтобы отобразить меню нужного элемента. Первый щелчок для выбора пункта, а второй показывает меню. Но я хочу одним щелчком мыши сделать две вещи. Есть ли у вас представление о проблеме?

Спасибо.

Ответы [ 3 ]

1 голос
/ 08 марта 2010

Я считаю, что этот код решает проблему:

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbRight then
    ListBox1.Perform(WM_LBUTTONDOWN, 0, MakeLParam(Word(X), Word(Y)));
end;
0 голосов
/ 28 июля 2010

Проблема решена. Как и ожидалось, я использовал TPopUpActionaBar, поэтому пользователь должен использовать простой TPopupMenu При использовании TPopUpMenu, нет проблем! (Извините за мой плохой английский!) Спасибо.

0 голосов
/ 08 марта 2010

Сначала добавьте TPopUpMenu в вашу форму и определите элементы, которые вы хотите отобразить на этом (в delphi 2010 дважды щелкните значок всплывающего меню, чтобы попасть в редактор элементов)

Во-вторых, установите элемент PopUpMenu в TListView для вновь созданного TPopUpMenu.

Если они правильно настроены, при щелчке правой кнопкой мыши на TListView вы увидите определенные элементы и запустите их из события On-Click

...