डेल्फी 6 में, मैं माउस कर्सर Screen.Cursor
का उपयोग कर सभी रूपों के लिए बदल सकता है:Screen.Cursor Firemonkey
procedure TForm1.Button1Click(Sender: TObject);
begin
Screen.Cursor := crHourglass;
end;
मैं Firemonkey में बराबर तलाश कर रहा हूँ।
के बाद समारोह काम नहीं करता:
procedure SetCursor(ACursor: TCursor);
var
CS: IFMXCursorService;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXCursorService) then
begin
CS := TPlatformServices.Current.GetPlatformService(IFMXCursorService) as IFMXCursorService;
end;
if Assigned(CS) then
begin
CS.SetCursor(ACursor);
end;
end;
जब मैं प्रक्रिया के अंत में एक Sleep(2000);
डालें, मैं 2 सेकंड के लिए कर्सर देख सकते हैं। लेकिन इंटरफ़ेस शायद मुक्त हो जाता है और इसलिए, कर्सर स्वचालित रूप से प्रक्रिया के अंत में रीसेट हो जाता है। मैंने इंटरफेस को मुक्त करने के लिए CS
को वैश्विक चर के रूप में परिभाषित करने की कोशिश की और प्रक्रिया के अंत में CS._AddRef
जोड़ें। लेकिन यह या तो मदद नहीं की। रोलबैक करने के लिए तो
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.MainForm.Cursor := crHourGlass;
end;
जब से मैं सभी रूपों के लिए कर्सर को बदलना चाहते हैं, मैं सभी रूपों के माध्यम से पुनरावृति करने की आवश्यकता होगी, लेकिन:
कोड काम करता है के बाद, लेकिन केवल मुख्य रूप के लिए काम करेंगे पिछले कर्सर मुश्किल है, क्योंकि मुझे हर रूप के लिए पिछले कर्सर को जानने की जरूरत है।
मेरे इरादे:
procedure TForm1.Button1Click(Sender: TObject);
var
prevCursor: TCursor;
begin
prevCursor := GetCursor;
SetCursor(crHourglass); // for all forms
try
Work;
finally
SetCursor(prevCursor);
end;
end;
धन्यवाद। शब्दकोश के साथ विचार अच्छा है। यह मेरा वर्तमान कोड है: http://pastebin.com/KC3AedTJ। यह डेल्फी 6 के लिए काम करता है, लेकिन एक एक्सई 7 फायरमोनकी परियोजना के साथ काम नहीं करता है। कोड वीसीएल ** और ** एफएमएक्स परियोजनाओं के लिए काम करना चाहिए। यह वास्तव में कष्टप्रद है कि यह पता लगाने के लिए कोई संकलक स्विच नहीं है कि परियोजना एफएमएक्स है या नहीं। --- प्रश्न # 2: कोड 'CS.SetCursor (ACursor) क्यों है; नींद (5000); 'अपेक्षित परिणाम है (5 सेकंड के लिए)? –
क्योंकि जब आप खिड़की पर माउस की तरह चीजें करते हैं तो फ्रेमवर्क 'SetCursor' को ही कॉल करता है। तो यह आपके द्वारा किए गए परिवर्तनों को आसानी से पूर्ववत करता है। –
उस स्पष्टीकरण के लिए धन्यवाद। यह समझ में आता है। हां, 'फॉर्म। कर्सर' सबसे अच्छा समाधान प्रतीत नहीं होता है। सबसे पहले, यह केवल कर्सर को फॉर्म पर सेट करता है, लेकिन अपने बच्चों (बटन आदि) पर नहीं, और किसी कारण से, कर्सर बदल नहीं जाता है, जब मैं मुख्य धागे में काम कर रहा हूं, उदा। 'स्लीप (2000)' का उपयोग करके, और 'एप्लिकेशन। हैंडलमेसेस' काम नहीं करता है। –