在 Delphi 11 Alexandria 的 Windows 10 中的 32 位 VCL 应用程序中,我有一个 TreeView (TTreeView
后代),其中MultiSelect = False
和PopupMenu = PopupMenu1
,所以当我右键单击 TreeView 中的一个节点时,然后PopupMenu1
被调用。
在PopupMenu1.OnPopup
事件处理程序中,我需要以编程方式选择右键单击的节点。我怎样才能做到这一点?
示例:在以下屏幕截图中,预选了第一个节点。当我右键单击最后一个节点以调用弹出菜单时,最后一个节点也会在视觉上被选中(尽管MultiSelect = False
!):
但是,当我尝试在PopupMenu1.OnPopup
事件处理程序中检测所选节点时:
procedure TformMain.PopupMenu1Popup(Sender: TObject);
begin
CodeSite.Send(MyTreeView.Selected.Text', MyTreeView.Selected.Text);
end;
...然后 CodeSite 报告仍然选择了第一个节点!
那么如何设置PopupMenu1.OnPopup
要选择的事件处理程序中的右键单击节点?
(请注意,TreeView 的OnMouseDown
事件处理程序在PopupMenu1.OnPopup
事件处理程序之后执行)
显然,TPopupMenu
班级缺少OnBeforePopup
活动!