我的 D2006 应用程序中有一个 OnIdle 处理程序。使用此代码:
procedure TMainForm.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
begin
Inc (IdleCalls) ;
Sleep (10) ;
Done := False ;
end ;
应用运行流畅,每秒调用空闲处理程序 100 次,CPU 使用率接近于零。
然后我添加了一个 TActionList 并将一些控件连接到操作,编写了一个 Execute 和 Update 处理程序。
procedure TMainForm.ActionNewButtonExecute(Sender: TObject);
begin
DoNewProject ;
end ;
procedure TMainForm.ActionNewButtonUpdate(Sender: TObject);
begin
ActionNewButton.Enabled := AccessLevelIsSupervisor ;
end;
问题。OnUpdate 事件不会触发。凭直觉,我在 OnIdle 处理程序中设置了 Done := true ,然后仅在移动鼠标时才调用 OnIdle 处理程序。并且更新操作仍然没有触发。
为什么更新处理程序可能不会触发,我应该将 Done 设置为 true 还是 false?或两者?