以下のようなコードで、TActionMainMenuBarに対してメニューを追加しようとしました。
//Man: TActionManager;
//Man.ActionBars[0]: TMainMenuBar
//Man.ActionBars[0].Items[1]: メニュー'編集(&E)'
AClient := Man.ActionBars[0].Items[1];
CategoryItem := TActionClientItem.Create(nil);
CategoryItem.Caption := 'Test(&T)';
CategoryItem.Collection := AClient.Collection;
CategoryItem.Index := AClient.Index + 1; // '編集'メニューの右に追加
with CategoryItem.Items.Add do
begin
Action := MainForm.DummyAction;//アクションを追加
end;
DummyAction自体はEnabledですが、'Test(&T)'メニューがDisabledで、クリックしても展開されません。
ただ、隣の'編集'メニューを展開し、マウスをずらしてTest(&T)に持って行くと、展開されます。
TActionClientItemにはEnabledプロパティがないため、変更できません。
Enabledの状態にする方法はありませんか?
環境はDelphi7Proです。
これも回避策ですが、DummyActionを、ActionManagerに登録し、これを追加することでEnabledにできました。
# 当たり前ですが
動的に追加したかったのは、カテゴリでなくその中のメニューアイテムでして、どうせならメニュー(カテゴリ)ごと挿入できないかと思いやっていました。
ツイート | ![]() |