教えてください。
ActionManagerからActionToolBarを作成し、メニュー項目を設定しました。
メニュー項目のグループ分けのためにセパレータをActionManagerからドラッグして設定してあります。
状況に応して、メニュー項目を非表示にした場合、セパレータも非表示にしたいのですが、方法が分かりません。
セパレータは、オブジェクトインスペクタには「TActionClients[1]」「TActionClients[5]」のように表示され、
プロパティ「ShowCaption」と「Visible」がありますが、プロパティ「Name」がなく変更する方法が分かりません。
よろしくお願いします。
左がセパレータ の セパレータを消す
var
I: Integer;
begin
for I:=1 to ActionManager1.ActionBars[1].ActionBar.ActionClient.Items.Count -1 do
begin
if ActionManager1.ActionBars[1].ActionBar.ActionClient.Items[I].Caption = '-' then
begin
if ActionManager1.ActionBars[1].ActionBar.ActionClient.Items[I-1].Caption = '-' then
begin
ActionManager1.ActionBars[1].ActionBar.ActionClient.Items[I].Visible := False;
end;
end;
end;
AAAAA 様のサンプルにあるように
デザイナの方で項目を設定した場合はActionManager1にあるActionBarsプロパティに入っているのでそれをVisibleで表示非表示する
セパレーターはTMenuItemと同じようにCaptionが '-'だとセパレーターになってるだけの実体はボタン
アクションツールバー(ActionToolBar)
https://afsoft.jp/program/del2010/p11_051.html
AAAAA 様、vram様 ありがとうございました。
頂いたヒントで、次のように解決しました。
var
i, j, k: Integer;
begin
for i := 0 to ActionManager1.ActionBars.Count - 1 do
begin
if ActionManager1.ActionBars[i].ActionBar = ActionMainMenuBar1
then
for k := 1 to ActionManager1.ActionBars[i].ActionBar.ActionClient.Items[j].Items.Count - 1 do
begin
if ActionManager1.ActionBars[i].ActionBar.ActionClient.Items[j].Items[k].Caption = '-'
then
ActionManager1.ActionBars[i].ActionBar.ActionClient.Items[j].Items[k].Visible :=
ActionManager1.ActionBars[i].ActionBar.ActionClient.Items[j].Items[k - 1].Visible;
end;
end;
end;