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
では、イベント ハンドラで右クリックしたノードを選択するように設定するにはどうすればよいでしょうか。
OnMouseDown
(TreeView のイベント ハンドラは、イベント ハンドラの後に実行されることに注意してくださいPopupMenu1.OnPopup
)
明らかに、TPopupMenu
クラスにはOnBeforePopup
イベントがありません。