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