And*_*rew 7 delphi listview popupmenu
我有一个ListView ViewStyle = vsReport和两个弹出菜单:
显示菜单最正确的方法是什么?我应该处理哪些事件?
问题是当我设置ListView.PopupMenu属性时,右键单击ListView的客户端矩形中的任何点后出现弹出菜单.
当我处理ListView.OnColumnRightClick事件时,如果仅在单击列标题后触发,则排除标题栏的可用空间(在列的右侧).
LisView.OnMouseUp只有在右键单击项目下方的空白后才会触发事件.
您不必使用PopupMenulistview 的属性,不设置它,您可以将OnContextPopup事件处理器附加到事件并根据位置启动您想要的任何弹出菜单.例:
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2724 次 |
| 最近记录: |