Dialog Event Listener Beispiel
Verfasst: So, 02.03.2008 21:58
Dieses Beispiel beschreibt den Einsatz eines Lauschers ("Listener") auf ein bestimmtes Ereignis ("Event") in einem Dialog.
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 )
Nun dieses Objekt einem Kontrollelement zuordnen:
Bei einem Focuswechsel werden die folgenden Unterroutinen selbständig aktiviert (aufgerufen).
Die Namen der Unterroutinen setzen sich zusammen aus dem oben vergebenen Prefix und dem Namen der Ereignisse:
Nach Ende des Dialogs die Lauscher unbedingt entfernen:
Hinweis:
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!
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!