2011-09-15 65 views
6

通常,當我有需要一段時間的工作,我用的腳本是這樣的:用Firemonkey,如何給用戶提供反饋? (crHourglass)

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

    try  
    // the task 

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

隨着FireMonkey,屏幕沒有一個屬性:光標

什麼是給用戶一些反饋的最佳方式?



我跟着的評論和答案...用TPanel具有較少的不透明度和TAniIndicator(我也模糊了其他組件):

Feedback

謝謝!

+4

調光的形式(通過重疊一些阿爾法混合矩形),並顯示動畫GIF - 等,其可以在http生成的那些中的一個://www.ajaxload.info/ - 也許? – mjn

+1

此外,如果在此期間不需要用戶交互,則可以通過禁用控件並顯示面板並顯示一條消息,如「Please wait while ...」和像mjn建議的動畫gif或進度條以表明該應用程序沒有被凍結等。 @mjn:+1爲調光效果和gif,很好的觸摸 – Morfic

+1

是的,這是有道理的...僅供參考,我已經使用了一個TAniIndicator這是一個組件看起來像任何ajaxload:o) – Whiler

回答

1

像@mjn指出的那樣,玻璃小時光標不再是您可以使用的唯一等待模式。

例如,在Silverlight/WPF,您可以使用一個繁忙的指標控制, http://www.codeproject.com/KB/silverlight/SilverlightBusyIndicator.aspx

所以,你可以嘗試做內FireMonkey類似的東西。可能有類似的控件可供您使用,或者您可以編寫自己的控件。

1

FireMonkey TScreen的沒有Cursor屬性,但全球平臺,例如有一個方法的setCursor:

使用 FMX.Platform,System.UITypes;

... Platform.SetCursor(nil,crHourGlass); 嘗試 ... finally Platform.SetCursor(nil,crDefault); 結束;

+0

我只是嘗試你的腳本...只要腳本沒有結束,它就會工作, t調用'ProcessMessages' ...'Platform.SetCursor(nil,crHourGlass); 睡眠(3000); 嘟嘟; while(not CheckBox1.IsChecked)do begin Application.ProcessMessages; 結束; ShowMessage('over');' – Whiler

1

這適用於我上XE3,在XP運行FireMonkey2:

`Application.MainForm.Cursor:= crHourGlass;` 
+0

供參考:它不存在於XE2中。 – Whiler

+0

此外,我希望所有組件上的沙漏......不僅僅是沒有組件的「Form」。 – Whiler

相關問題