Hallo Dirk,
Dirk hat geschrieben:mri und xray (die nicht wirklich meine Freunde sind)
Wetten doch!
Anfangs habe ich mich auch gefragt was soll ich damit?
Die Frage wurde mir beantwortet, nachdem ich gelernt hatte die Inspection-Tools in Verbindung mit der jeweiligen API (LibreOffice/ OpenOffice) zu nutzen.
Am schwierigsten war dabei nicht das Verständnis für die Tools, sondern wie ich die API zu lesen und umzusetzen hatte.
Was machen mri und xray?
Sie zeigen Dir eine Benutzeroberfläche deren Inhalte aus der API gespeist werden.
Mehr noch, Sie zeigen an, wie z.B. das Struct SIZE oder POS zu „bilden“ und anzuwenden ist.
Auch die Listenener können inspiziert werden.
Beispiel an Ric’s Action-Listner:
Ein Listener muss zuerst registriert werden, es muss quasi ein Bereich im Arbeitsspeicher für den Listener reserviert werden und der Listener braucht einen Namen und einen Zeiger (Objektvariable).
Im Grunde hat Jörn dies bereist beantwortet.
Name: → ActionListener_
Zeiger auf das Listener_Objekt → oActionListener
Zeiger auf das Control_Objekt → oControl
Code: Alles auswählen
oActionListener = createUnoListener("ActionListener_", "com.sun.star.awt.XactionListener")
Nachdem der Listner registriert wurde, kann der Zeiger mittels mri oder xray inspiziert werden:
Mit Klick auf Methoden im xray-Fenster, werden Dir die Methoden angeziegt, welche Du in Deinem Code als Sub-Routine verwenden kannst.
Beispiel anhand des Action-Listner.
Namen der Methoden:
Hier gibt es nur zwei Methoden die für Deinen Code erforderlich sind:
- actionPerformed
Ist die Methode, welche das Ereignis (Event) abfängt und bei Klick auf den Button eíne Aktion ausführt.
- disposing
Ist UNBEDINGT erforderlich, damit der Listener bei Beendigung des Programms aus dem Arbeitsspeicher entfernt wird, bzw. der reservierte Bereich des Speichers wieder freigegeben wird.
Hier eine sehr übersichtliche Seite aus der LibreOffice-API mit diversen Listenern.
Die einzelnen Felder des Diagramms dieser Seite sind weiterführende Links.
Ein Mouse-Listener.
Registrieren des Listeneners:
Code: Alles auswählen
oMouseListener=createUnoListener("MouseListener_","com.sun.star.awt.XmouseListener")
Methoden des Listners auslesen:
Namen der Methoden:
Code: Alles auswählen
acquire
disposing
mouseEntered
mouseExited
mousePressed
mouseReleased
queryInterface
release
Hier findest Du ein Beispielokument zum Mouse-Listener im engliscehn Forum:
Mouse-Listner
Mouse-Events:
https://api.libreoffice.org/docs/idl/re ... Event.html
Welcher Button wurde gedrückt?
https://api.libreoffice.org/docs/idl/re ... utton.html
Damit nun eine Reaktion auf ein Mausereignis erfolgt, bedarf es wiederum einer Sub-Routine.
Code: Alles auswählen
Sub MouseListener_mouseEntered
print "Mouse has entered!"
End Sub
MouseListener_ = Der Name , welcher dem Listener zugeordnet wurde:
oMouseListener=createUnoListener("
MouseListener_","com.sun.star.awt.XmouseListener")
Dann folgt die Methode:
mouseEntered
Zusammengestzt sieht dies so aus:
Jetzt fehlt noch die eigentliche Aktion, welche beim auslösen des Events erfolgen soll:
mri und xray sind genial..., oder?
Nachtrag:
Man kann auch das Event selbst mittels xray/mri auslesen
In Ric's Beispiel →
xray oEv einfügen:
Code: Alles auswählen
Sub ActionListener_actionPerformed(oEv)
xray oEv
Hello_World
end sub
Beim Mouse-Listener würde man als xray-Anwort die Anzahl der Mausklicks auslesen können,
welche Taste (Key-Konstante) gedrückt wurde,usw.
Code: Alles auswählen
Sub MouseListener_mousePressed(oEv)
xray oEv
print "Mouse has mousePressed!"
End Sub