Markierten Eintrag in Listbox (Dialog) auslesen

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

Moderator: Moderatoren

wosp
Beiträge: 5
Registriert: Sa, 26.02.2011 20:30

Markierten Eintrag in Listbox (Dialog) auslesen

Beitrag von wosp »

Hallo,
ein kleines Problem für einen Könner ein großes für mich:
Ich habe unter liebevoller Mithilfe endlich in einem Dialog eine Listbox erstellt und diese mit daten aus meiner datenbank gefüllt.
Jetzt kann ich einen Eintrag anklicken, der wird dann blau unterlegt.
Nun möchte ich diese Auswahl auslesen und dann mit einem Makro weiterverarbeiten.
Leider schlagen bislang alle Versuch fehl, dies zu programmieren, auch die in den Tools hinterlegten Beispiele.
Außer Fehlermeldungen nicht gewesen.
Hier der Auszug aus dem Ende des Code: Dies füllt die Listbox wunderbar. Aber wie bekomme ich jetzt Zugriff auf einen ausgewählten Eintrag, und reicht zum auswählen einfach ein Click auf einen Eintrag aus, oder muss dieser noch mit Code unterlegt werden?

dim strEintraege(iAnzahl)

for i = 1 to iAnzahl
strEintraege(i-1) = ResultSet.GetString(1)
ResultSet.next
next

oListBox.additems(strEintraege(),0)

oDialog1.Execute()

wäre sehr für einen Hinweis verbunden
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Markierten Eintrag in Listbox (Dialog) auslesen

Beitrag von F3K Total »

Hallo Wosp,
hast Du den Dialog oberhalb des Programmes definiert?
Das ist mal Voraussetzung, etwa so:

Code: Alles auswählen

Dim oDialog1 as Object
Sub ...
Grund: Du brauchst ein zweites Makro zum Auslesen des Wertes. Wenn Du den Dialog oberhalb der Sub definierst, wird er an das zweite Makro übergeben.
Ich mache es meist so, dass ich unterhalb der Listbox noch einen CommandButton "OK" definiere:
Listbox.png
Diesem ordne ich dann das zweite Makro unter "Eigenschaften/Ereignisse/Aktion ausführen" zu. Also erst in der Listbox Eintrag auswählen, dann mit OK bestätigen. Jetzt brauchst Du noch den Namen der Listbox, findest Du unter "Eigenschaften/Allgemein/Name", ich nehme mal folgenden Namen an: "lst_Name".
Das zweite Makro sieht dann etwa so aus:

Code: Alles auswählen

Sub Auslesen
oControl=oDialog1.GetControl("lst_Name")
oGewaehlteZeile=oControl.Text
oDialog1.endExecute()
msgbox "Du hast "+oGewaehlteZeile+" gewählt"
end Sub
oGewaehlteZeile ist also der Wert, mit dem Du nun weitermachen kannst.
G R
wosp
Beiträge: 5
Registriert: Sa, 26.02.2011 20:30

Re: Markierten Eintrag in Listbox (Dialog) auslesen

Beitrag von wosp »

Hallo Gr
Danke erstmal für die Antwort...
Leider taucht immer wieder dasselbe Problem auf. Wenn ich über den Commandobutton ins 2.Sub gehe erscheint die Fehlermeldung, "Varible nicht definiert."

Der Gesamte Code sieht so aus und funktioniert auch recht gut, nur das auslesen geht überhaupt nicht.
Die Hauptroutine heißt "fuenfter Versuch," der Button ruft die den sub "Antwort" auf, in den ich Deinen Code eingefügt habe. Ich weiß auch eigentlich nicht ob ich das "getcontroll" richtig mit dem Namen "Listbox1" ausgefüllt habe:

Dim oDialog1 as Object ' Dein Vorschlag
Sub Main

end sub

Sub fuenfterVersuch ' hier gehts los!

Dim nextFile as string

DialogLibraries.LoadLibrary( "Standard" )
oDialog1 = CreateUnoDialog( DialogLibraries.Standard.Dialog1 )
oListBox = oDialog1.getControl("ListBox1")

'dim strEintraege(iAnzahl)

DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("Feldinhalt")
Connection = DataSource.GetConnection("","")
Statement = Connection.createStatement()
Statement.ResultSetType = 1004 '= com.sun.star.sdbc.ResultSetType.SCROLL_INSENSITIVE
ResultSet = Statement.executeQuery("SELECT distinct Diagnose as Diagnose FROM Anamnese order by Diagnose ASC;")
Index=resultset.findcolumn("Diagnose")
'Anzahl suchen
ResultSet.Last

iAnzahl=ResultSet.GetRow

'MsgBox iAnzahl

if iAnzahl <= 0 then
end
end if

ResultSet.First

dim strEintraege(iAnzahl)

for i = 1 to iAnzahl
strEintraege(i-1) = ResultSet.GetString(1)
ResultSet.next
next

oListBox.additems(strEintraege(),0)
oDialog1.Execute()
Resultset.close() ' ob das wichtig ist weiß ich nicht wurde nachher eingefügt
Statement.close() ' ob das wichtig ist weiß ich nicht wurde nachher eingefügt
End Sub

Sub Antwort ' Dahin springt der Button
oControl=oDialog1.GetControl("Listbox1")
oGewaehlteZeile=oControl.Text
oDialog1.endExecute()
msgbox "Du hast "+oGewaehlteZeile+" gewählt"
end Sub
wosp
Beiträge: 5
Registriert: Sa, 26.02.2011 20:30

Re: Markierten Eintrag in Listbox (Dialog) auslesen

Beitrag von wosp »

Noch ein Zusatz: ich habe alles gespeichert und nochmals geöffnet, den Namen Listbox1 nochmals eingegeben aber danach kam eine andere Fehlermeldung:

Eigenschaft oder Methode nicht gefunden : .Text

bei oControl.Text.
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Markierten Eintrag in Listbox (Dialog) auslesen

Beitrag von F3K Total »

Sorry, mein Fehler.
Ich habe gerade festgestellt, dass ich nur Kombinationsfelder verwende.
Beim Listenfeld nimmst Du ".SelectedItem" anstelle ".Text".
Das Ergebnis ist ein String.
G R
wosp
Beiträge: 5
Registriert: Sa, 26.02.2011 20:30

Re: Markierten Eintrag in Listbox (Dialog) auslesen

Beitrag von wosp »

Dank und nochmals Dank -- es funzt.. :D
Heinz Bär
****
Beiträge: 130
Registriert: Mo, 28.03.2005 11:20
Wohnort: CH-6467 Schattdorf

Re: Markierten Eintrag in Listbox (Dialog) auslesen

Beitrag von Heinz Bär »

Hallo wosp

Bitte nächstes mal nur in einem Forum eintragen, nicht OO und LO!

Gruss
Heinz
Antworten