gpt4 book ai didi

delphi - 如何将ListView标题栏的弹出菜单与项目弹出菜单一起设置?

转载 作者:行者123 更新时间:2023-12-03 14:51:48 33 4
gpt4 key购买 nike

我有一个带有 ViewStyle = vsReport 的 ListView 和两个弹出菜单:

  1. 列弹出菜单,我想在用户右键单击标题栏时打开该菜单
  2. 项目弹出菜单,必须在用户右键单击任何列表项目/子项目或项目下方的空白时打开。

显示菜单的最正确方法是什么?我应该处理哪些事件?

问题是当我设置ListView.PopupMenu属性时,右键单击ListView客户端矩形中的任意点后会出现弹出菜单。

当我处理 ListView.OnColumnRightClick 事件时,如果仅在单击列标题后触发,不包括标题栏的可用空间(列右侧)。

事件 LisView.OnMouseUp 仅在右键单击项目下方的空白区域后触发。

最佳答案

您不必使用 ListView 的 PopupMenu 属性,将其保留为未设置,您可以将处理程序附加到 OnContextPopup 事件并启动您想要的任何弹出菜单d喜欢取决于职位。示例:

procedure TForm1.ListViewContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
var
HeaderRect: TRect;
Pos: TPoint;
begin
GetWindowRect(ListView_GetHeader(ListView.Handle), HeaderRect);
Pos := ListView.ClientToScreen(MousePos);
if PtInRect(HeaderRect, Pos) then
PopupMenuColumns.Popup(Pos.X, Pos.Y)
else
PopupMenuItems.Popup(Pos.X, Pos.Y);
end;

关于delphi - 如何将ListView标题栏的弹出菜单与项目弹出菜单一起设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11259099/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com