Ich habe die letzten Wochen versucht eine Anwendung zu erstellen unter macOS die den Apple Kalender auslesen kann. Das auslesen funktioniert, nur geht das mit dem behandeln von den Eventhandlern nicht, und dazu sind die genutzten Header usw. die die MacAPi under Lazarus nutzt depricated und sollten einfach nichtmehr genutzt werden. Mein wissen ist zu gering um selbst etwas zu Wrappen oder ähnliches.
am Schluss sollen einfach die Kalendereinträge genutzt werden um eine Rechnung mit einem Report generator raushauen zu können.
In Delphi funktioniert das mit den Eventhandlern und dem Eventkit wunderbar, jedoch kosten die Report Generatoren einfach zuviel und ich habe nichts freies gefunden... es ist einfach zum kotzen.
Entweder ich mache das weiter mit Lazarus und habe ein Report generator aber dafür arbeite ich mit depricated aufrufen... und kann den handler nicht handeln weill das zu einem Absturz führen wird... wo mir irgendwie keiner helfen kann damit umzugehen. habe auch schon im Englischen Forum gefragt, alle Antworten haben zu keinem Ergebnis geführt. D.h. mit dem nächsten OS update kann es sein das die Anwendung einfach nichtmehr funktioniert...
Oder nehme delphi und kaufe nen Report generator.... Oder keine ahnung, lasse es am besten gleich mit Delphi und Co, und lerne Swift und versuche das irgendwie über ne HTML Seite zu lösen die dann gedruckt wird.
Oder eventuell ist das alles nicht so tragisch... und einfach zu lösen... aber keine Ahnung wie was wo.. steh grad bisschen vor einer Wand.
Versuche eine Lösung zu finden... Und weiss gerade nicht weiter.
Re: Versuche eine Lösung zu finden... Und weiss gerade nicht weiter.
Hab eine Lösung gefunden...
und ich verstehe noch nicht genau weshalb ich das so machen kann Vielleicht kann mir das einer erklären, dachte da müsste noch viel im hintergrund gemacht werden wenn man etwas wrappen möchte? heist das so?.
- (void)requestFullAccessToEventsWithCompletion:(EKEventStoreRequestAccessCompletionHandler)completion;
steht in der eventkit Doku für MacOS 14
ich hab jetzt versucht das nachzubasteln, und das scheint zu funktionieren. Ich dachte da muss man irgendwie noch mehr machen als
und ich verstehe noch nicht genau weshalb ich das so machen kann Vielleicht kann mir das einer erklären, dachte da müsste noch viel im hintergrund gemacht werden wenn man etwas wrappen möchte? heist das so?.
- (void)requestFullAccessToEventsWithCompletion:(EKEventStoreRequestAccessCompletionHandler)completion;
steht in der eventkit Doku für MacOS 14
ich hab jetzt versucht das nachzubasteln, und das scheint zu funktionieren. Ich dachte da muss man irgendwie noch mehr machen als
Code: Alles auswählen
TEKEventStoreRequestAccessCompletionHandler = procedure(granted: Boolean; error: NSError) of object; cblock; cdecl;
EKEventStore = objcclass external (NSObject)
procedure requestFullAccessToEventsWithCompletion(completion: TEKEventStoreRequestAccessCompletionHandler); message 'requestFullAccessToEventsWithCompletion:'; // Beachten Sie die Verwendung der message-Direktive
Code: Alles auswählen
unit Unit1;
{$mode delphi}
{$modeswitch objectivec1}
{$modeswitch cblocks}
{$linkframework eventkit}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,MacOSAll,CocoaAll,CocoaUtils;
type
TEKEventStoreRequestAccessCompletionHandler = procedure(granted: Boolean; error: NSError) of object; cblock; cdecl;
EKEventStore = objcclass external (NSObject)
procedure requestFullAccessToEventsWithCompletion(completion: TEKEventStoreRequestAccessCompletionHandler); message 'requestFullAccessToEventsWithCompletion:'; // Beachten Sie die Verwendung der message-Direktive
end;
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
procedure RequestAccessHandler(granted: Boolean; error: NSError); cdecl;
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.RequestAccessHandler(granted: Boolean; error: NSError);
begin
if granted then
label1.caption := 'granted'
else If Assigned(error) then
Label1.Caption := 'Fehler: ' + UTF8String( error.localizedDescription);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
store: EKEventStore;
begin
store := EKEventStore.alloc.init;
store.requestFullAccessToEventsWithCompletion(RequestAccessHandler);
end;
end.