【问题标题】:Double right click to Show a PopUpMenu with A TListView !双击右键显示带有 TListView 的 PopUpMenu !
【发布时间】:2010-03-08 14:56:59
【问题描述】:

我有一个 TListView 和 TPopupMenu,当我右键单击一个 TListItem 时,我想显示一个上下文菜单。 我通过分配组件尝试了“AutoPopup”,但是在右键单击时仅显示 PopupMenu 并且未选择想要的元素。所以我尝试使用“OnMouseDown”,但我们需要单击并再次单击以显示所需项目的菜单。第一次单击是选择项目,第二次显示菜单。 但我只想一键完成这两件事。你对这个问题有什么想法吗?

谢谢。

【问题讨论】:

  • 我不认为有问题,因为选择是在鼠标按下时发生的,而弹出菜单是在鼠标抬起时显示的。只需分配列表视图的PopupMenu 即可。它在我的程序中对报表视图样式的项目执行此操作。

标签: delphi contextmenu popupmenu tlistview


【解决方案1】:

我相信这段代码可以解决问题:

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;

【讨论】:

  • 至少如果您指的是 TListBox。如上所述,TListView 没有问题。
  • 我没有 TListBox,但有一个 TListView(vsReport 作为 ViewStyle) 我将在 Tlistview 上测试代码。谢谢。
【解决方案2】:

首先在表单中添加一个 TPopUpMenu 并定义要在其上显示的项目(在 delphi 2010 中双击弹出菜单图标进入项目编辑器)

其次将TListView中的PopUpMenu项设置为新创建的TPopUpMenu。

如果这两个设置正确,当您右键单击 TListView 时,您将看到已定义的项目,并从其 On-Click 事件中触发它们

【讨论】:

    【解决方案3】:

    问题解决了。正如预期的那样,我使用的是 TPopUpActionaBar,所以必须使用一个简单的 TPopupMenu 使用 TPopUpMenu 时,没问题! (请原谅我的英语不好!) 谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-29
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 2013-01-18
      • 2017-03-14
      • 1970-01-01
      相关资源
      最近更新 更多