如果我有一个设置 Cursor := crHourglass, Application.ProcessMessages 的 ButtonClick 事件,然后使用 TOpenDialog 选择一个文件,然后执行一些 CPU 密集型操作,则光标的行为会有所不同,具体取决于它是否在打开时位于现有控件上对话框关闭。如果光标在控件上方,则光标保持为沙漏;如果它完全在应用程序之外,然后在密集过程仍在进行时移入该区域,则光标将保持为箭头。一个人不能点击或做任何事情,所以用户会感到困惑,得到一个箭头但不能用它做任何事情。
单步调试调试器显示 Cursor 在任何地方都是 -11。使用 Screen.Cursor 代替 Cursor 具有相同的效果。
有解决办法吗?
procedure TMyForm.LoadButtonClick(Sender: TObject);
begin
Cursor := crHourglass;
Application.ProcessMessages;
if OpenDialog.Execute then begin
// Do something intensive
// Cursor = crHourglass here but what is displayed is different
end;
Cursor := crDefault;
end;