Listener für Listbox

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

susapo
Beiträge: 3
Registriert: Fr, 31.01.2020 19:47

Listener für Listbox

Beitrag von susapo » So, 09.02.2020 13:31

Hallo, ich hab einen recht grossen Dialog der zur Laufzeit erstellt wird.
jetzt stehe ich vor dem Listener Problem, konkret will ich den gewählten Eintrag einer Listbox auswerten.
ich such seit Stunden im Netz, aber hab kein Glück oder bin zu blöd oder was auch immer.

dies hier versuche ich, hab ich irgendwo gefunden

Code: Alles auswählen

Sub KundenAuswahl


oListKunde = oDlgM.createInstance("com.sun.star.awt.UnoControlListBoxModel")

Kunde_Listener = createUnoListener( "LKunde_", "com.sun.star.awt.XItemListener" ) 

oListKunde.addItemListener( LKunde_Listener ) 

'..... usw
End Sub


Sub LKunde_ItemStateChanged( oEvent ) 
print "Index des Listeneintrags, der nun gewählt ist:" & oEvent.Selected
End Sub
bei oListKunde.addItemListener( LKunde_Listener ) kommt die Fehlermeldung:
Eigenschaft oder Methode nicht gefunden: addItemListener
Wie muß die Zeile stattdessen heißen? Jmd ne Idee??

vielen Dank im voraus
Michael

Stephan
********
Beiträge: 11418
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Listener für Listbox

Beitrag von Stephan » So, 09.02.2020 14:31

das ist deshalb so weil für das Model des Dialogs/Listbox die Methode .addItemListener garnicht verfügbar ist. Das Läst sich prüfen durch z.B. Ausgabe von .dbg_methods

Code: Alles auswählen

Sub KundenAuswahl


oListKunde = oDlgM.createInstance("com.sun.star.awt.UnoControlListBoxModel")

Kunde_Listener = createUnoListener( "LKunde_", "com.sun.star.awt.XItemListener" )

Msgbox oListKunde.dbg_methods

'oListKunde.addItemListener( LKunde_Listener ) 

'..... usw
End Sub
in der angezeigten Auflistung der Methoden taucht dabei .addItemListener nicht auf.


nur das sog. "View" kennt im konkreten Falle die Methode .addItemListener und der Code müsste z.B. so lauten:

Code: Alles auswählen

Sub KundenAuswahl

oListKunde = oDlgM.createInstance("com.sun.star.awt.UnoControlListBoxModel")

Kunde_Listener = createUnoListener( "LKunde_", "com.sun.star.awt.XItemListener" ) 

oDlgM.insertByName("BlaBla", oListKunde)

'diese 2 Zeilen gibt es bei Dir wohl schon in ähnlicher Weise
'wichtig ist nur die Referenz auf das "View" des Dialogs zu bekommen
Dlg = CreateUnoService("com.sun.star.awt.UnoControlDialog")
Dlg.setModel(oDlgM)

Dlg.getControl("BlaBla").addItemListener( LKunde_Listener )

'..... usw
End Sub

Ganz eindeutig ist das nicht, denn ich habe geraten das oDlgM inhaltlich das Model des Dialogs ist, was andererseits aber ziemlich sicher ist, sonst käme bereits in der ersten Code-Zeile ein Fehler.


Gruß
Stephan

Antworten