2011-09-15 10 views
6

आमतौर पर, जब मैं एक काम जो कुछ समय लगता है, मैं एक स्क्रिप्ट इस तरह का उपयोग करें: कर्सर:फायरमोनकी के साथ, उपयोगकर्ता को प्रतिक्रिया कैसे दें? (CrHourglass)

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

    try  
    // the task 

    finally  
    Screen.Cursor := cPrevious; 
    end; 
end; 
FireMonkey साथ

, स्क्रीन एक संपत्ति नहीं है।

उपयोगकर्ता को कुछ प्रतिक्रिया देने का सबसे अच्छा तरीका क्या है?

Feedback

:



मैं टिप्पणियों और जवाब ... एक TPanel जो कम अस्पष्टता है, और एक TAniIndicator साथ (मैं भी अन्य घटकों को धुंधला) का पालन किया

धन्यवाद!

+4

रूप Dimming (कुछ अल्फा मिश्रित आयत ओवरले करके) और एक एनिमेटेड GIF प्रदर्शित - उन में से एक है जो http पर उत्पन्न किया जा सकता है जैसे : //www.ajaxload.info/ - शायद? – mjn

+1

यदि इस समय के दौरान कोई भी उपयोगकर्ता इंटरैक्शन वांछित नहीं है, तो आप नियंत्रण को अक्षम करके और "कृपया प्रतीक्षा करें ..." जैसे संदेश के साथ पैनल को प्रदर्शित करके और अधिक स्पष्ट कर सकते हैं और एनिमेटेड gif जैसे mjn सुझाया गया है, या प्रगति पट्टी यह इंगित करने के लिए कि ऐप जमे हुए नहीं है, आदि @mjn: डाimming प्रभाव और gif के लिए +1, अच्छा स्पर्श – Morfic

+1

हाँ, यह समझ में आता है ... FYI, मैंने एक TAniIndicator का उपयोग किया है जो एक ऐसा घटक है जो दिखता है किसी भी AJAXload: ओ) – Whiler

उत्तर

1

@mjn की तरह इंगित किया गया है, कांच का समय कर्सर अब एकमात्र प्रतीक्षा पैटर्न नहीं है जिसका आप उपयोग कर सकते हैं।

उदाहरण के लिए, Silverlight/WPF में, आप एक व्यस्त सूचक नियंत्रण का उपयोग कर सकते हैं, http://www.codeproject.com/KB/silverlight/SilverlightBusyIndicator.aspx

तो तुम FireMonkey अंदर कुछ इसी तरह करने की कोशिश कर सकते हैं। आपके लिए पहले से उपयोग करने के लिए एक समान नियंत्रण हो सकता है, या आप अपना खुद का लिख ​​सकते हैं।

1

FireMonkey TScreen कोई कर्सर संपत्ति है, लेकिन वैश्विक मंच उदाहरण एक SetCursor विधि है:

FMX.Platform, System.UITypes उपयोग करता है;

... Platform.SetCursor (शून्य, crHourGlass); आज़माएं ... अंत में प्लेटफ़ॉर्म.SetCursor (शून्य, crDefault); अंत;

+0

मैं बस अपनी स्क्रिप्ट का प्रयास करता हूं ... यह तब तक काम करता है जब तक स्क्रिप्ट खत्म नहीं होती है, और आप' टी 'प्रक्रिया संदेश' कॉल करें ... 'प्लेटफार्म .etCursor (शून्य, crHourGlass); नींद (3000); बीप; जबकि (चेकबॉक्स 1। जांच नहीं किया गया) प्रारंभ करें। प्रोसेस मैसेज; अंत; शोमेसेज ('ओवर'); ' – Whiler

1

यह XE3 पर मेरे लिए काम करता है, FireMonkey2 XP पर चल रहा है:

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

एफवाईआई: यह एक्सई 2 में मौजूद नहीं है। – Whiler

+0

इसके अलावा, मैं सभी घटकों पर, हर जगह घंटेग्लस चाहता हूं ... न केवल घटकों के बिना 'फॉर्म' पर। – Whiler

संबंधित मुद्दे