2009-07-05 13 views
1

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

ありがとうございます!

+2

アクションのGroupIndexプロパティを設定した場合、追加のコードをまったく書く必要はありません。このプロパティーは、アクションがグループの一部であることをアクションに伝えるので、ラジオボタンのように、チェックされたときに自動的にすべてのチェックボックスをオフにします。 –

+0

また、この質問はリボンやDelphi 2009とは関係がありません.Delphi 4でアクションが導入されました。これらのタグを削除するか、質問を編集して関連性の高いものにすることを検討してください。 –

+0

@Rob:タグ上の優れた点は、誤ったタグ付けに賛成することを認めます。あなたの提案に従って編集しました。偉大な答えは、BTW! – Argalatyr

答えて

2

TActionManagerTCustomActionListに由来します。後者でできることは何でも、前者で行うことができます。それには、使用する必要のある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に導入されているので、上記のコードはそのクラスから降りていないものもフィルタリングします。

+0

robが私の特定の質問を別の方法で解決しましたが、この回答は、このアクションの仕組みがどのように機能するかを理解する上で非常に役立ちます。 ありがとう! – user133370

関連する問題