में मैक ओएस फाइंडर में मेनू आइटम कैसे जोड़ें I डेल्फी XE2 एप्लिकेशन लक्ष्यीकरण मैक ओएस और विंडोज पर काम कर रहा हूं। और मैं संदर्भ मेनू में एकीकरण करना चाहता हूं। खिड़कियों के लिए यह आसान काम है। लेकिन मैक ओएस के लिए मुझे नहीं पता कि यह कैसे करें।डेल्फी XE2
मैंने Providing a Service दस्तावेज पढ़ा है और डेल्फी में समान कोड की कोशिश की लेकिन बिना किसी किस्मत के।
खोजक एकीकरण परीक्षणों के लिए सरल कोड देखें।
App.dpr
program App;
uses
SysUtils,
{$IFDEF MACOS}
AppKit, CocoaTypes, CoreFoundation,
CoreServices, Foundation, Mach, ObjCRuntime,
ObjectiveC, OCMarshal, OpenGL, QuartzCore, Security,
SystemConfiguration,
{$ENDIF}
MessageProvider;
{$IFDEF MACOS}
var
app: NSApplication;
provider: TMessageProvider;
{$ENDIF}
begin
Application.Initialize;
{$IFDEF MACOS}
provider := TMessageProvider.Create();
app := TNSApplication.Alloc();
app.setServicesProvider(provider);
{$ENDIF}
Application.CreateForm(TFormOSVersion, FormOSVersion);
Application.Run;
end.
MessageProvider.pas
unit MessageProvider;
interface
uses
FMX.Dialogs
{$IFDEF MACOS}
, AppKit, CocoaTypes, CoreFoundation,
CoreServices, Foundation, Mach, ObjCRuntime,
ObjectiveC, OCMarshal, OpenGL, QuartzCore, Security,
SystemConfiguration
{$ENDIF}
;
type
TMessageProvider = class
public
procedure simpleMessage(var userData: string; var error: string);
end;
implementation
procedure TMessageProvider.simpleMessage(var userData: string; var error: string);
begin
ShowMessage('Simple message from service.');
error := '';
end;
end.
जोड़ा विन्यास Info.plist को
<key>NSServices</key>
<array>
<dict>
<key>NSKeyEquivalent</key>
<dict>
<key>default</key>
<string>e</string>
</dict>
<key>NSMenuItem</key>
<dict>
<key>default</key>
<string>App/Message</string>
</dict>
<key>NSMessage</key>
<string>simpleMesage</string>
<key>NSPortName</key>
<string>App</string>
</dict>
</array>
जब मैक ओएस आवेदन hungs पर इस चलाने के लिए और कभी कभी के साथ 'दुर्घटनाओं बस त्रुटि 'अपवाद।
क्या कोई इस समस्या से मदद कर सकता है?
या शायद डेल्फी XE2 इस तरह की कार्यक्षमता का समर्थन नहीं करता है?
संबंधित प्रश्न यह है कि आप कोको + ऑब्जेक्टिव सी का उपयोग कर रहे हैं, कोको/उद्देश्य सी संदेश-आधारित एपीआई का आह्वान करने के लिए डेल्फीएक्सई 2/फायरमोनकी क्षमता का उपयोग करके अनुकूलित किया जा सकता है: http://stackoverflow.com/questions/9420361/add-an-item -इन-फाइंडर्स-प्रासंगिक-मेनू-साथ-कोको - मैं कोको/ऑब्जेक्टिव सी का उपयोग करके पूरी मेक-सर्विस बिट लिखने का लुत्फ उठाऊंगा और उसके बाद उस मूल उद्देश्य को साझा करने का एक तरीका ढूंढूंगा जो आपके डेल्फी ऐप से साझा लाइब्रेरी है। –
मुझे लगता है कि यदि यह करने योग्य है तो आपको इसे मुफ्त पास्कल दस्तावेज़ या फ़ोरम में मिल जाएगा क्योंकि XE2 ओएसएक्स के लिए मुफ्त पास्कल का उपयोग करता है। और चूंकि मुफ्त पास्कल ओएसएक्स पर बहुत लंबा रहा है, मुझे यकीन है कि इसमें डेल्फी मंचों से अधिक होगा। – adrianj98