接続された TAction を非表示に設定してコンポーネントを非表示にすると、onupdate イベントがトリガーされなくなります。再作成するには、次の手順を実行します。
- 新しい VCL フォーム アプリケーションを作成する
- ボタン、チェックボックス、およびアクションリストをフォームにドロップします。
- 新しいアクションを作成し、それにボタンを接続します。
アクション OnExecute および OnUpdate イベントの次のコードを記述します。
procedure TForm1.Action1Execute(Sender: TObject); begin ShowMessage('Test'); end; procedure TForm1.Action1Update(Sender: TObject); begin TAction(Sender).Enabled := not CheckBox1.Checked; TAction(Sender).Visible := TAction(Sender).Enabled; end;
アプリケーションを実行します。ボタンが表示され、適切に機能します。チェックボックスにチェックを入れると、ボタンが消えます。チェックボックスをオフにします。ボタンが表示されません。実際、Action1Update にブレークポイントを設定すると、そこに到達することはありません。これはなぜですか、どうすれば修正できますか?