2

リボン ボタンをクリックすると、リボンのすべての TAction オブジェクトの "checked" プロパティを false にリセットし、押されたボタンだけを true に設定したいと考えています。しかし、ActionManager のアクションのすべての「チェック済み」プロパティにアクセスする方法はまだ見つかりませんでした。アクションマネージャーのアクションリストをループする必要があると思います...しかし、正しい方法をまだ見つけていません。誰かがこれについて私にヒントを与えることができれば、とてもうれしいです。

ありがとう!

4

1 に答える 1

3

TActionManagerから派生しTCustomActionListているので、後者でできることは何でも、前者で行うことができます。使用する必要のある2つのプロパティがあります。Actionsこれは、リストのすべてのアクションにアクセスできる配列プロパティであり、とは、リストのアクションのActionCount数を示します。それらを使用して、次のような通常のループを記述します。

var
  i: Integer;
  Contained: TContainedAction;
  Action: TCustomAction;
begin
  for i := 0 to Pred(ActionList.ActionCount) do begin
    Contained := ActionList[i]; // shorthand for ActionList.Actions[i]
    if not (Contained is TCustomAction) then
      continue; // Doesn't have Checked property

    Action := TCustomAction(Contained);
    Action.Checked := False;
  end;
end;

Checkedアクションリストにはさまざまな種類のアクションを含めることができ、すべてにプロパティがあるわけではありません。そのプロパティはで導入されてTCustomActionいるため、上記のコードは、そのクラスから派生していないものも除外します。

于 2009-07-06T04:38:04.360 に答える