1

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イベントがありません。

4

1 に答える 1