2017-04-18 18 views
0

サブメニュー項目をクリックすると親を見つけたいと思っています。たとえば、下の画像でL3Bをクリックすると、結果は「L1/L2/L3B」になります。delphiのサブメニュー項目の親を検索

Popup menu

+0

をしてください呼び出します。 –

+0

あなたはこのサイトで質問をすることになっています。しかし、あなたの問題のために必要はありません。あなたは単にドキュメントを読むことができます。 –

+0

私はあなたが「L1/L2/L3A」を意味すると思います。しかし、それはL3Bの親ではありません。 L3Bの親はテキストL3Aのメニュー項目です。私はあなたがメニュー項目の親のテキストを再帰的に見つけたいと思うと思います。その親がメニ​​ュー項目である限り、テキストをあるセパレータで連結します。 – Dsm

答えて

4

あなたは、メニューのフルパスを取得するには、再帰関数を使用することができます。あなたのMenuItemClickで

function Form1.GetMenuPath(Menu: TMenuItem): String; 
begin 
    if (Menu.Parent <> nil) and (Menu.Parent.ClassType = TMenuItem) then 
    Result := GetMenuPath(TMenuItem(Menu.Parent)); 
    if Result <> '' then 
    Result := Result + ' > '; 
    Result := Result + Menu.Caption; 
end; 

あなたが望むように行う、機能

procedure Form1.L3B1Click(Sender: TObject); 
begin 
    ShowMessage(GetMenuPath(TMenuItem(Sender))); 
end; 
+0

@DavidHeffernan回答が編集されました。ありがとうございました。 –

+0

ありがとうございました。 –

関連する問題