【问题标题】:With Firemonkey, how to give feedback to the user ? (crHourglass)使用 Firemonkey,如何给用户反馈? (cr沙漏)
【发布时间】:2011-09-15 07:22:02
【问题描述】:

通常,当我有一个需要一些时间的任务时,我会使用这样的脚本:

procedure Work;
var
  cPrevious: TCursor;
begin
  cPrevious     := Screen.Cursor;
  Screen.Cursor := crHourGlass;

  try    
  // the task

  finally    
    Screen.Cursor := cPrevious;
  end;
end;

使用 FireMonkey,Screen 没有属性:Cursor

向用户提供反馈的最佳方式是什么?



我跟随 cmets 和答案...使用了一个不透明度较低的 TPanel 和一个 TAniIndicator(我也模糊了其他组件):

谢谢!

【问题讨论】:

  • 使表单变暗(通过覆盖一些 alpha 混合矩形)并显示动画 GIF - 就像可以在 ajaxload.info 生成的那些 - 也许?
  • 此外,如果在此期间不需要用户交互,您可以通过禁用控件并显示带有“请稍候...”之类消息的面板和动画 gif 之类的消息来使其更加明显mjn 建议,或进度条指示应用未冻结等。@mjn:+1 用于调光效果和 gif,触感很好
  • 是的,这是有道理的...仅供参考,我使用了一个 TAniIndicator,它是一个看起来像任何 ajaxload 的组件 :o)
  • @Whiler:它看起来像 iPhone 上的 UIActivityIndi​​cator 或 Mac 上的 NSActivityIndi​​cator。
  • 在 Delphi Classic 中执行此操作时,您应该将耗时的操作包装在 try 块中,并将屏幕光标设置回 finally 部分。否则耗时活动中的异常使光标处于沙漏状态。

标签: delphi feedback delphi-xe2 firemonkey


【解决方案1】:

就像@mjn 指出的那样,玻璃小时光标不再是您可以使用的唯一等待模式。

例如,在 Silverlight/WPF 中,您可以使用忙碌指示器控件, http://www.codeproject.com/KB/silverlight/SilverlightBusyIndicator.aspx

所以你可以尝试在 FireMonkey 中做类似的事情。可能已经有类似的控件供您使用,或者您可以编写自己的控件。

更新:TAniIndicator 是要使用的组件

【讨论】:

  • 显然,它甚至不再是一种可能的模式(至少不是开箱即用的)......
  • @AndreasRejbrand 你的意思是 TAniIndicator 在 FireMonkey 中不再可用?
【解决方案2】:

FireMonkey TScreen 没有 Cursor 属性,但全局 Platform 实例有一个 SetCursor 方法:

用途 FMX.Platform、System.UITypes;

... Platform.SetCursor(nil, crHourGlass); 尝试 ... 最后 Platform.SetCursor(nil, crDefault); 结束;

【讨论】:

  • 我只是试试你的脚本......只要脚本没有结束,它就可以工作,而且你不打电话给ProcessMessages...Platform.SetCursor(nil, crHourGlass); Sleep(3000); Beep; while (not CheckBox1.IsChecked) do begin Application.ProcessMessages; end; ShowMessage('over');
  • Platform 变量声明在哪个单位?
【解决方案3】:

这适用于我在 XE3 上,FireMonkey2 在 XP 上运行:

`Application.MainForm.Cursor:= crHourGlass;`

【讨论】:

  • 仅供参考:XE2 中不存在。
  • 此外,我希望沙漏无处不在,在所有组件上......不仅在没有组件的Form 上。
  • 是的,这种方法有一个巨大且令人震惊的缺点:它只在光标位于表单上方时更改光标,而不是在表单的任何子控件上方。由于表单通常充满孩子,这还远远不够。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
相关资源
最近更新 更多