Dialog Event Listener Beispiel

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Dialog Event Listener Beispiel

Dialog Event Listener Beispiel

von komma4 » 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 )

Code: Alles auswählen

oLauscheFocus = _
 createUnoListener( _
 "TextFeld_" , _
 "com.sun.star.awt.XFocusListener" _
)
Nun dieses Objekt einem Kontrollelement zuordnen:

Code: Alles auswählen

oDialog.getControl( "TextField1").addFocusListener( oLauscheFocus )
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:

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 )
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!

Nach oben