Einzelnen Beitrag anzeigen

TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: LibreOffice/OpenOffice Automation TerminateListener

  Alt 5. Okt 2015, 11:25
TerminateListener muss ein Objekt sein, was das Interface XTerminateListener implementiert.
Das musst du wahrscheinlich selber implementieren.

Aus der hohlen Hand mal runtergetippt:

Delphi-Quellcode:
 
 XTerminateListener = interface(XEventListener)
  [Irgendeine_GUID_die_wohl_schon_vorhanden_ist]
    procedure queryTermination(const Event : EventObject); stdcall;
    procedure notifyTermination(const Event : EventObject); stdcall;
  end;

  TDeineLustigeKleineListenererKlasse = class(TInterfacedObject, XTerminateListener)
  public
    procedure notifyTermination(const Event: EventObject); stdcall;
    procedure queryTermination(const Event: EventObject); stdcall;
  end;

...

{ TDeineLustigeKleineListenererKlasse }

procedure TDeineLustigeKleineListenererKlasse.notifyTermination(const Event: EventObject);
begin
  Writeln('notifyTermination wurde gerufen!');
end;

procedure TDeineLustigeKleineListenererKlasse.queryTermination(const Event: EventObject);
begin
  Writeln('queryTermination wurde gerufen!');
end;

...

var
  DeinXDesktop : XDesktop;
  DeinListener : XTerminateListener;
begin
  DeinXDesktop := ServiceManager.createInstance ('com.sun.star.frame.XDesktop');
  DeinListener := TDeineLustigeKleineListenererKlasse.Create;
  DeinXDesktop.addTerminateListener(DeinListener);
end;
  Mit Zitat antworten Zitat