在 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活動!
uj5u.com熱心網友回復:
我知道的最簡單的解決方案是使用OnContextPopup事件:
procedure TForm1.TreeView1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
var TreeNode := TreeView1.GetNodeAt(MousePos.X, MousePos.Y);
if Assigned(TreeNode) then
TreeNode.Selected := True;
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/424516.html
標籤:德尔福 vcl 弹出菜单 delphi-11-亚历山大
上一篇:獲取類的一些欄位到JSON
下一篇:更新后檢索列的值?
