Es sieht aus wie Sie einen Zuhörer in ein Tabellenkalkulationskomponente registrieren möchten. Um Ihr Ziel zu erreichen, können Sie den Listener selbst dem Tabellenkalkulationsobjekt oder einem anderen verschachtelten Objekt hinzufügen, das eine Schnittstelle implementiert, die eine add. + EventListener() -Methode unterstützt.
Unten finden Sie ein Paar (Broadcaster/Hörer), dass ich glaube, können Sie in Ihrem Projekt verwenden: https://wiki.openoffice.org/wiki/Documentation/DevGuide/ProUNO/Event_Model
Im Folgenden sind Beispiele dafür, wie: XDocumentEventBroadcaster/XDocumentEventListener
Das UNO-Event-Modell hier erklärt Diese Listener werden verwendet.
////////////////////////////////////////////////////////////////////
// Add document window listeners.
////////////////////////////////////////////////////////////////////
System.out.println("WriterDoc: Add window listeners.");
// Example of adding a document displose listener so the application
// can know if the user manually exits the Writer window.
document.addEventListener(new XEventListener() {
public void disposing(EventObject e) {
System.out.println(
"WriterDoc (Event Listener): The document window is closing.");
}
});
// Example of adding a window listener so the application can know
// when the document becomes initially visible (in the case of this
// implementation, we will manually set it visible below after we
// finish building it).
window.addWindowListener(new XWindowListener() {
public void windowShown(com.sun.star.lang.EventObject e) {
System.out.println(
"WriterDoc (Window listener): The document window has become visible.");
}
public void windowHidden(com.sun.star.lang.EventObject e) { }
public void disposing(com.sun.star.lang.EventObject e) { }
public void windowResized(com.sun.star.awt.WindowEvent e) { }
public void windowMoved(com.sun.star.awt.WindowEvent e) { }
});
Auch der Dienst SheetCellRange unterstützt die Schnittstelle XModifyBroadcaster. Vielleicht könnten Sie das gewünschte Verhalten erhalten, wenn Sie ein XModifyListener-Objekt registriert haben. Das Objekt würde die 'modifizierte' Methode implementieren, die beim Aufruf ein EventObject empfängt. Ich glaube, Sie können herausfinden, wer der Aufrufer ist von der Source-Eigenschaft des EventObject. Wenn sich herausstellt, dass die Quelle der gesamte SheetCellRange ist, können Sie versuchen, alle Zellen, die Sie überwachen möchten, durchzuschleifen und jeweils einen XModifyListener hinzuzufügen. Der SheetCell-Dienst unterstützt auch die XModifyBroadcaster-Schnittstelle.
Beispiel für die Verwendung des XModifyBroadcaster von einem Cellrange: http://openoffice.2283327.n4.nabble.com/Re-How-to-get-the-XModifyBroadcaster-from-Cell-CellRange-Table-td2771959.html
Prost!
Versuchen Sie, auf einem libreoffice IRC-Kanal zu fragen, einige aktive Entwickler sitzen dort und ich denke, es ist viel mehr möglich, dass Sie Ihre Antwort dort bekommen werden. –