D2006アプリにOnIdleハンドラーがあります。このコードで:
procedure TMainForm.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
begin
Inc (IdleCalls) ;
Sleep (10) ;
Done := False ;
end ;
アプリはスムーズに実行され、アイドルハンドラーは1秒間に100回呼び出され、CPU使用率はほぼゼロです。
次に、TActionListを追加し、いくつかのコントロールをアクションに接続し、実行および更新ハンドラーをコーディングしました。
procedure TMainForm.ActionNewButtonExecute(Sender: TObject);
begin
DoNewProject ;
end ;
procedure TMainForm.ActionNewButtonUpdate(Sender: TObject);
begin
ActionNewButton.Enabled := AccessLevelIsSupervisor ;
end;
問題。OnUpdateイベントは発生しません。思い切って、OnIdleハンドラーでDone:= trueを設定すると、マウスを動かしたときにのみOnIdleハンドラーが呼び出されます。そして、更新アクションはまだ起動しません。
Updateハンドラーが起動しないのはなぜですか?Doneをtrueまたはfalseに設定する必要がありますか?または両方?