siehe: http://de.wikipedia.org/wiki/Ereignis_(Programmierung)
Wichtig beim Einsatz von Listenern ist, dass jede dieser Zuordnungen auch wieder entfernt wird.
Hier: wie einem Eingabefeld eines Dialoges ein FocusListener zugeordnet wird.
Ein FocusListener wird ausgelöst, wenn das Kontrollelement den Focus erhält ("Cursor kommt ins Feld": focusGained ), oder verliert ("Sprung ins nächste Feld": focusLost ).
Als erstes wird ein Objekt vom "Lauscher" erzeugt:
Syntax: Objekt = createUnoListener( prefix, interfaces )
Code: Alles auswählen
oLauscheFocus = _
createUnoListener( _
"TextFeld_" , _
"com.sun.star.awt.XFocusListener" _
)
Code: Alles auswählen
oDialog.getControl( "TextField1").addFocusListener( oLauscheFocus )
Die Namen der Unterroutinen setzen sich zusammen aus dem oben vergebenen Prefix und dem Namen der Ereignisse:
Code: Alles auswählen
' =====
' zugeordnetes Kontrollelement wurde verlassen
Sub TextFeld_focusLost( oLauscheFocus )
' Beispiele für Aktionen
' welches Kontrollelement wurde verlassen
' wie im Editor als "Name" sichtbar
dlg_FeldName = _
oLauscheFocus.Source.Model.Name
' ermitteln des Textes des Kontrollelements
dlg_FeldInhalt = _
oDialog.getControl( dlg_FeldName ).getText()
End Sub
' =====
' zugeordnetes Kontrollelement wurde betreten
Sub TextFeld_focusGained( oLauscheFocus )
End Sub
Nach Ende des Dialogs die Lauscher unbedingt entfernen:
Code: Alles auswählen
oDialog.getControl( "TextField1").removeFocusListener( oLauscheFocus )
werden in die Unterroutinen Anweisungen eingebaut, die Anzeigen auf dem Bildschirm hervorrufen (PRINT, MSGBOX oder ähnliche Befehle), so wird die Aktion u.U. ausgelöst, da sich ja der Focus ändert. So kann schnell eine Endlosschleife auftreten.
Viel Spass mit OOoBasic!