Auslesen von Auswahl (Listbox und Combobox) in Variablen
Moderator: Moderatoren
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Auslesen von Auswahl (Listbox und Combobox) in Variablen
Hallo,
im Writer habe ich ein schönes Makro erstellt, leider funktionieren 6 Sachen noch nicht, aber damit ich nicht ins Schleudern gerate, schön langsam eins nach dem anderen.
Mein erstes und bislang wichtigstes Problem hängt mit der Listbox und der Combobox zusammen.
Ich habe beides untereinander in einem Dialog, um bestimmte Mitarbeiter auszuwählen (immer nur einen) und der ausgewählte Eintrag soll in einer Variablen gespeichert werden.
Leider weiß ich nicht, wie man die Auswahl auslesen kann.
Beispiele habe ich schon gehabt, die mir aber nicht geholfen haben, da sie nicht bei mir funktioniert haben (hab OpenOffice 1.0.3 und das war wohl für was superaltes).
Ich freue mich schon auf Vorschläge, Ideen, Tricks und Tipps.
Danke,
Lillie
im Writer habe ich ein schönes Makro erstellt, leider funktionieren 6 Sachen noch nicht, aber damit ich nicht ins Schleudern gerate, schön langsam eins nach dem anderen.
Mein erstes und bislang wichtigstes Problem hängt mit der Listbox und der Combobox zusammen.
Ich habe beides untereinander in einem Dialog, um bestimmte Mitarbeiter auszuwählen (immer nur einen) und der ausgewählte Eintrag soll in einer Variablen gespeichert werden.
Leider weiß ich nicht, wie man die Auswahl auslesen kann.
Beispiele habe ich schon gehabt, die mir aber nicht geholfen haben, da sie nicht bei mir funktioniert haben (hab OpenOffice 1.0.3 und das war wohl für was superaltes).
Ich freue mich schon auf Vorschläge, Ideen, Tricks und Tipps.
Danke,
Lillie
Für den Fall einer Listbox sollte das ungefähr so gehen:
Die Listbox bietet folgende Methoden:
http://api.openoffice.org/common/ref/co ... stBox.html
Die anderen Controls können im Packet com.sun.awt eingesehen werden.
Code: Alles auswählen
oDoc = ThisComponent
oDrawPage = oDoc.DrawPage
oForm = oDrawPage.Forms.GetByName( "formularName" )
Dim sAusgewaehlterEintrag as String
Dim oListBox as Object
sAusgewaehlterEintrag = oListBox.getSelectedItem()
MsgBox sAusgewählterEintrag
http://api.openoffice.org/common/ref/co ... stBox.html
Die anderen Controls können im Packet com.sun.awt eingesehen werden.
Meine Installation: AMD Athlon XP 1600+, 512 MB RAM, SuSE Linux 8.2, OpenOffice 1.1
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Danke :)
Guten Morgen,
danke für die Antwort, werde ich kommende Woche sofort ausprobieren.
Ein schönes Wochenende
Lillie
danke für die Antwort, werde ich kommende Woche sofort ausprobieren.
Ein schönes Wochenende
Lillie
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Geht nicht :(
Hallo,
folgendes habe ich eingegeben:
DialogLibraries.LoadLibrary("Standard")
oAuswahl = CreateUnoDialog(DialogLibraries.Standard.dlgAuswahl)
oListBox = oAuswahl.GetControl ("lbl_Sachb")
sZusatz = oListBox.getSelectedItem()
Der erste Teil ist soweit okay bis zu dem sZusatz, weil damit habe ich die Einträge schon in die Listbox reinschreiben lassen.
Allerdings geht das Makro einfach weiter und gibt keinen Wert in die Variable sZusatz ein.
Woran kann das liegen?
Viele Grüße
Lillie
folgendes habe ich eingegeben:
DialogLibraries.LoadLibrary("Standard")
oAuswahl = CreateUnoDialog(DialogLibraries.Standard.dlgAuswahl)
oListBox = oAuswahl.GetControl ("lbl_Sachb")
sZusatz = oListBox.getSelectedItem()
Der erste Teil ist soweit okay bis zu dem sZusatz, weil damit habe ich die Einträge schon in die Listbox reinschreiben lassen.
Allerdings geht das Makro einfach weiter und gibt keinen Wert in die Variable sZusatz ein.
Woran kann das liegen?
Viele Grüße
Lillie
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Könnte das der Fehler sein?
Hallo,
seit Montag teste ich immer wieder die Tipps vom openmind, aber ohne Ergebnis.
Kann es sein, dass es nicht geht, weil ich vorher die Daten aus einer Textdatei in die Listbox einlese? Es könnte doch dann sein, dass deswegen nichts gefunden wird (als Wert wird 0 angezeigt).
Danke für Ideen,
viele Grüße
Lillie
seit Montag teste ich immer wieder die Tipps vom openmind, aber ohne Ergebnis.
Kann es sein, dass es nicht geht, weil ich vorher die Daten aus einer Textdatei in die Listbox einlese? Es könnte doch dann sein, dass deswegen nichts gefunden wird (als Wert wird 0 angezeigt).
Danke für Ideen,
viele Grüße
Lillie
hi,
scheint als ob ich da was missverstanden habe. Mein Code zeigt wie man ein Formular verwendet. Dein Code zeigt, dass Du ein Dialog meinst, wie Du das auch im ersten Post geschrieben hast. Sorry...
Ich versuch die Scharte auszuwetzen. Es folgt ein Beispiel, welches einen Dialog erzeugt, Einträge in einer vorerst leeren Listbox des Dialoges hinzufügt und schliesslich anzeigt.
Eine zweite Subprozedur liest dan den selektierten Eintrag der Listbox aus und zeigt ihn mit einer MessageBox an.
Insgesamt kommt es aber auf dasselbe hinaus, wie das was Du scheinbar schon ausbrobiert hast, nur dass ich nicht 0, sondern den Text des Eintrages als Rückgabewert von getSelectedItem() bekomme. Dennoch:
Der Dialog ist jetzt erschienen. Neben der Listbox gibt es einen Button, der durch drücken folgende Subprozedur aufruft:
Wie erwähnt verwendet die zweite Prozedur eine globale Variable oCustomerDialog. Ganz einfach am Anfang die VAriable ausserhalb jeglicher Subprozedur gloabl deklarieren:
Das ganze hab ich mit Linux unter 1.1rc nochmals getestet und lief auch auf 1.0.3
scheint als ob ich da was missverstanden habe. Mein Code zeigt wie man ein Formular verwendet. Dein Code zeigt, dass Du ein Dialog meinst, wie Du das auch im ersten Post geschrieben hast. Sorry...
Ich versuch die Scharte auszuwetzen. Es folgt ein Beispiel, welches einen Dialog erzeugt, Einträge in einer vorerst leeren Listbox des Dialoges hinzufügt und schliesslich anzeigt.
Eine zweite Subprozedur liest dan den selektierten Eintrag der Listbox aus und zeigt ihn mit einer MessageBox an.
Insgesamt kommt es aber auf dasselbe hinaus, wie das was Du scheinbar schon ausbrobiert hast, nur dass ich nicht 0, sondern den Text des Eintrages als Rückgabewert von getSelectedItem() bekomme. Dennoch:
Code: Alles auswählen
Sub openCustomerDialog
' init brauchts um die DB-connection zu holen etc.
' out-of-scope hier
init()
' erzeuge den Dialog
DialogLibraries.LoadLibrary( "Standard" )
oCustomerDialog = CreateUnoDialog( DialogLibraries.Standard.CustomerDialog )
' listbox-control des Dialogs deklarieren
' istbox hat den Namen 'customerList'
Dim oList as Object
oList = oCustomerDialog.getControl( "customerList" )
' datenbank connection öffnen
oDBStatement = oDBConnection.createStatement()
' SELECT statement absetzten
oDBResult = oDBStatement.executeQuery( "SELECT [...] FROM [...] WHERE [...]" )
' für jeden Kunden-Eintrag in der DB gibts einen Eintrag
' in der Listbox
While oDBResult.next()
oList.addItem( oDBResult.getString(2) & " - " & oDBResult.getString(3) )
Wend
' schliess das resultset und das statement
oDBResult.close()
oDBStatement.close()
' zeige initialisierten Dialog an
oCustomerDialog.Execute()
End Sub
Code: Alles auswählen
Sub showSelectedCustomer
' hole die List aus dem Dialog, der als globale
' variable deklariert ist
Dim oList as Object
oList = oCustomerDialog.getControl( "Kunden" )
' zeige den Wert des selektierten Eintrags an
MsgBox oList.getSelectedItem()
End Sub
Code: Alles auswählen
Gobal oCustomerDialog as Object
Meine Installation: AMD Athlon XP 1600+, 512 MB RAM, SuSE Linux 8.2, OpenOffice 1.1
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Woran könnte es noch liegen, dass es bei mir nicht geht?
Guten Morgen,
meine Objekte für die Dialoge habe ich nicht als globale Variablen deklariert. Aber ich denke, daran kann es nicht liegen...
Das Einlesen geht ja, aber das Auslesen.
Inzwischen habe ich versucht die Position in eine Integer-Variable einzulesen und damit einem Array zu sagen, dass er sich mit dem anderen vergleichen kann (was sonst mit normaler String-Variablen und dem Array wäre).
Ob es hilft, weiß ich nicht, aber das hier ist der erste Teil mit dem Einlesen in die Listbox:
Sub Main
Open sOrgZif For Input As 1
x = 0
While Not eof(1)
Input #1, Zus_Array(x), An_Array(x), Vn_Array(x), SB_Array(x), Zi_Array(x), Tel_Array(x), Fx_Array(x), Em_Array(x), Ba_Array(x), Abk_Array(x), FB_Array(x), A1_Array(x), A2_Array(x), Hs_Array(x), SpZ_Array(x)
x = x+1
Wend
Close #1
iZahl = x
DialogLibraries.LoadLibrary("Standard")
oAuswahl = CreateUnoDialog(DialogLibraries.Standard.dlgAuswahl)
oAuswahlModel = oAuswahl.Model
oSachb = oAuswahl.GetControl ("lbl_Sachb")
Dim sCount as String
While x <> 0
sCount = " "
oSachb.AddItem (Zus_Array(x) & " " & sCount,1)
x = x - 1
Wend
oAuswahl.Execute()
End Sub
In dem nächsten Sub ist die Stelle, an der es nicht weitergeht:
Sub Aendern
DialogLibraries.LoadLibrary("Standard")
oAuswahl = CreateUnoDialog(DialogLibraries.Standard.dlgAuswahl)
oListBox = oAuswahl.GetControl ("lbl_Sachb")
sZusatz = oListBox.getSelectedItem()
MsgBox sZusatz
z = 0
oAuswahl.Endexecute()
x = iZahl
While sZusatz<> Zus_Array(z) and z < 200
z = z + 1
Wend
iZahl1 = z
.
.
.
Vielleicht siehst du ja einen Fehler...
Vielen Dank
und viele Grüße
Lillie
meine Objekte für die Dialoge habe ich nicht als globale Variablen deklariert. Aber ich denke, daran kann es nicht liegen...
Das Einlesen geht ja, aber das Auslesen.
Inzwischen habe ich versucht die Position in eine Integer-Variable einzulesen und damit einem Array zu sagen, dass er sich mit dem anderen vergleichen kann (was sonst mit normaler String-Variablen und dem Array wäre).
Ob es hilft, weiß ich nicht, aber das hier ist der erste Teil mit dem Einlesen in die Listbox:
Sub Main
Open sOrgZif For Input As 1
x = 0
While Not eof(1)
Input #1, Zus_Array(x), An_Array(x), Vn_Array(x), SB_Array(x), Zi_Array(x), Tel_Array(x), Fx_Array(x), Em_Array(x), Ba_Array(x), Abk_Array(x), FB_Array(x), A1_Array(x), A2_Array(x), Hs_Array(x), SpZ_Array(x)
x = x+1
Wend
Close #1
iZahl = x
DialogLibraries.LoadLibrary("Standard")
oAuswahl = CreateUnoDialog(DialogLibraries.Standard.dlgAuswahl)
oAuswahlModel = oAuswahl.Model
oSachb = oAuswahl.GetControl ("lbl_Sachb")
Dim sCount as String
While x <> 0
sCount = " "
oSachb.AddItem (Zus_Array(x) & " " & sCount,1)
x = x - 1
Wend
oAuswahl.Execute()
End Sub
In dem nächsten Sub ist die Stelle, an der es nicht weitergeht:
Sub Aendern
DialogLibraries.LoadLibrary("Standard")
oAuswahl = CreateUnoDialog(DialogLibraries.Standard.dlgAuswahl)
oListBox = oAuswahl.GetControl ("lbl_Sachb")
sZusatz = oListBox.getSelectedItem()
MsgBox sZusatz
z = 0
oAuswahl.Endexecute()
x = iZahl
While sZusatz<> Zus_Array(z) and z < 200
z = z + 1
Wend
iZahl1 = z
.
.
.
Vielleicht siehst du ja einen Fehler...
Vielen Dank
und viele Grüße
Lillie
Ich würde mal schätzen, dass es daran liegt, dass Du in der zweiten SubProcedur einen neuen Dialog erzeugst und nicht den schon erzeugten abfragts, welcher Einträge enthält.
Versuch doch mal einfach
ausserhalb der Prozeduren und lass in der zweiten Subprozedur das CreateUnoDialog, weil das, wie der Name sagt, einen neuen Dialog kreiert. (doofes deutsches Wort 'kreiert', was?)
Code: Alles auswählen
Sub Aendern
' hier wird ein NEUER Dialog erzeugt und der
' Variable oAuswahl zugewiesen.
DialogLibraries.LoadLibrary("Standard")
oAuswahl = CreateUnoDialog(DialogLibraries.Standard.dlgAuswahl)
' muss leer sein wenn Du nicht schon Einträge in DialogDesigner gemacht hast.
oListBox = oAuswahl.GetControl ("lbl_Sachb")
sZusatz = oListBox.getSelectedItem()
MsgBox sZusatz
' tausche da mit oAuswahl.Execute()
' hats jetzt zwei Dialoge ??
oAuswahl.Endexecute()
End Sub
Code: Alles auswählen
Global oAuswahl as Object
ausserhalb der Prozeduren und lass in der zweiten Subprozedur das CreateUnoDialog, weil das, wie der Name sagt, einen neuen Dialog kreiert. (doofes deutsches Wort 'kreiert', was?)
Meine Installation: AMD Athlon XP 1600+, 512 MB RAM, SuSE Linux 8.2, OpenOffice 1.1
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
Kostenlose OOo-CD in der Schweiz: http://www.office-cd.ch/
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
ES GEHT!!!! *freu*
Herzlichen Dank,
er hat jetzt einen Wert und sogar den richtigen.
Zwar geht das noch nicht, das er den Datensatz rauspickt, aber das mache ich dann später. Aber das geht und das war das derzeit Wichtigste.
Ich habe jetzt oAuswahl global gemacht und den zweiten Aufruf des Dialogs geremt und zack es geht.
Viele Grüße von einer erleichtert in die Mittagspause gehende
Lillie
er hat jetzt einen Wert und sogar den richtigen.
Zwar geht das noch nicht, das er den Datensatz rauspickt, aber das mache ich dann später. Aber das geht und das war das derzeit Wichtigste.
Ich habe jetzt oAuswahl global gemacht und den zweiten Aufruf des Dialogs geremt und zack es geht.
Viele Grüße von einer erleichtert in die Mittagspause gehende
Lillie
-
- **
- Beiträge: 25
- Registriert: Di, 15.07.2003 14:31
- Wohnort: Einbeck & Frankfurt (Main)
- Kontaktdaten:
Noch schnell was ausprobiert
Die Datensätze werden ausgelesen, anstatt der String-Variablen nehme ich jetzt eine Integer und lasse die Position des ausgewählten Items einlesen. Dadurch kann ich das Array mit dem anderem Array aus der Datenbank vergleichen und das ganz fungiert. *jubel* Ist das ein Tag.