[gelöst] Listbox-Problem

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

Moderator: Moderatoren

Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

[gelöst] Listbox-Problem

Beitrag von jkl »

Hi,

ich habe ein Problem mit der Listbox in einem Dialog. Folgenden Code habe ich eingefügt:

Code: Alles auswählen

Sub Dateneintragen
myDoc = thisComponent
oBib=DialogLibraries.LoadLibrary("Standard")
oDialog= CreateUnoDialog(Dialoglibraries.Standard.Dialog1)

dim i as integer
Rem Schueler1

Sheet1=myDoc.Sheets.getbyName(Schueler1)

For i = 0 to 390

	if Sheet1.getCellbyPosition(0,i).string = "" then
	exit for
	end if
Next
rem Sheet1.getCellbyPosition(0,i).string = date


dim oListbox1 as object
oListbox1 = oDialog.getControl("Listbox1")

Sheet1.getCellbyPosition(1,i).string = oListbox1.getSelectedItem()
Sheet1.getCellbyPosition(2,i).string = oDialog.getControl("Listbox2").SelectedItem


End sub
Leider bekomme ich immer

(hier:Sheet1.getCellbyPosition(1,i).string = oListbox1.getSelectedItem())

die Meldung: "Objektvariable nicht belegt". Keine Ahnung an was das liegt. Die linke Seite der Gleichung funktioniert, aber beide Varianten funktioneren nicht. Ich komme einfach nicht weiter... Sieht vielleicht jemand wo der Fehler ist?

Vielen Dank auf jeden Fall

J. Kleis
Zuletzt geändert von jkl am So, 03.02.2008 22:18, insgesamt 1-mal geändert.
http://www.schulzeug-online.de OpenOffice in der Förderschule...
Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

Re: Listbox-Problem

Beitrag von jkl »

Hallo,

leider hat sich das Problem nicht lösen lassen. Ich habe es nicht geschafft auf die Listbox zuzugreifen. Jetzt habe ich es mit Textfeldern gemacht. Aber ich würde das gerne noch ändern. Vielleicht kann jemand helfen.

Also der Zugriff auf die Listbox hat nicht geklappt, weder auf die View-Ansicht, noch auf das Model-Objekt. Was mich gewundert hat, ich konnte auf das Objekt zugreifen (Beobachter bei gestopptem Probelauf), aber ich hatte dabei (meine ich jedenfalls) Zugriff auf das Dialog-Objekt und dann stimmen natürlich die Eigenschaften nicht.... Kann mir das Verhalten jedenfalls nicht erklären.

Vielleicht kann mir mal jemand ein Dokument mit einem funktionierendem Zugriff mailen, dann kann ich den Quellcode studieren...

Vielen Dank, falls sich jemand bemüht...

J. Kleis
http://www.schulzeug-online.de OpenOffice in der Förderschule...
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Listbox-Problem

Beitrag von komma4 »

Hallo J.,

Zu Deinem ersten Posting habe ich mir den Code mal angeschaut, mögliche Antworten:

(A)
Du erhälst ein NULL-Objekt, wenn Du den Namen falsch schreibst: hier wird "ListBox1" generiert (im Basic-Editor); Du schreibst: "Listbox1"
===
(B)
die Fehlermeldung liegt an der Tatsache, dass kein Eintrag ausgewählt wurde....
===

Fragen:
(C)
was soll die (Leer-)Schleife bis Zeile 391?

Zum Feststellen der letzten Zeichenkette in einem Bereich nehme einen Code wie:

Code: Alles auswählen

Dim Schueler1 as String
Schueler1 = "Tabelle2"

Sheet1=myDoc.Sheets.getbyName(Schueler1)

oBereich = Sheet1.getCellRangeByName( "A2:A99999" )

print oBereich.queryContentCells( _
 com.sun.star.sheet.CellFlags.STRING _
 ).getRangeAddressesAsString()
===

(D) zum schnellen Füllen einer Listbox nehme Arrayfunktionen, das macht sich insbesondere bei grösseren Listen zeitlich bemerkbar:

Code: Alles auswählen


ReDim listElemente( 0 ) as String

enumZellen = oDaten.getCells().createEnumeration()

i = 0
While enumZellen.hasMoreElements()
 ReDim Preserve listElemente( i ) 

 listElemente( i )  = enumZellen.nextElement().getString()
 i = i + 1

WEnd
[...]

' Setzen der Listbox mit Array von Strings
oListbox1.getModel().StringItemList = listElemente()
===


(E)
Für einen Benutzerdialog sind knapp vierhundert Einträge zu viel. Kannst Du die Anzahl nicht reduzieren, indem Du Gruppen bildest?

===

Jetzt lese ich, dass Du den Versuch aufgegeben hast?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Listbox-Problem

Beitrag von komma4 »

(F) wollte ich noch nachliefern:

If oListBox1.SelectedItemPos > -1 then

stellt fest, ob tatsächlich ein Eintrag ausgewählt wurde.

Nun ist meine Frau da - und nervt: sie hat Hunger und möchte gefüttert werden. Dem kann ich natürlich nicht widersprechen. Bis später.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

Re: Listbox-Problem

Beitrag von jkl »

Hallo,

vielen Dank für die Antwort. So bin ich also direkt als ganz übler Hobby-Programmierer erkannt. :lol:

Zur Sache: Die Schleife ist lediglich zum Suchen der ersten freien Zelle. Die Zellen sollen aber nicht ausgelesen werden, sondern in die erste freie Zelle soll die Auswahl aus der Listbox eingetragen werden. Dein Code-Beispiel werde ich mir aber ansehen und wenn ich es verstehe nutzen :)

Die anderen Vorschläge passen nicht. Ich habe den Code jetzt nochmal außerhalb meines eigentlichen Dokuments geschrieben und auch da funktioniert es nicht:

Code: Alles auswählen

dim myDoc as object, oDialog as object, stext as string
dim oControl as object
dim stext as string

Sub Main

oBib=DialogLibraries.LoadLibrary("Standard")
oDialog = CreateUnoDialog(Dialoglibraries.Standard.Dialog1)
oControl=oDialog.getModel().getbyName("Listbox1")
rem oControl=oDialog.getControl("Listbox1")
rem oControl=oDialog.getControl("Listbox1").model()



oDialog.execute

End Sub

Sub dann

stext=oControl.getSelectedItem()
oDialog.endexecute

msgBox(stext)

End sub
Auch in diesem Beispiel (alle drei Varianten - siehe rem...) kann ich nicht auf das ausgewählte Element zugreifen. Vielleicht kann mir jetzt jemand helfen. Meine Notlösung ist übrigens eine Notlösung und ich würde sie gerne beenden.

J. Kleis
http://www.schulzeug-online.de OpenOffice in der Förderschule...
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Listbox-Problem

Beitrag von turtle47 »

Hi J.Kleis,

versuche mal folgendes:

Code: Alles auswählen

Sub DialogAufruf
	DialogLibraries.loadLibrary("Standard") 'Standardbibliothek laden
	oForm = DialogLibraries.Standard.Dialog1 'Dialogname Dialog1
	oDialog1 = CreateUnoDialog(oForm)
	oDialog1.execute()
	End Sub
	
Sub ListboxAuslesen
	inhalt = oDialog1.GetControl("ListBox1")
	Position =  inhalt.selecteditempos
	msgbox Position
	Ergebnis() = inhalt.model.StringItemList()
	msgbox Ergebnis(Position)
End Sub
Ist es das was Du suchst?

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

Re: Listbox-Problem

Beitrag von jkl »

Hi,

vielen Dank für die Antwort. Es bestätigt sich, was ich befürchtet habe... oder gehofft, weil ich dann nicht einfach nur zu doof bin. Hat dein Code bei dir funktioniert? Ich gehe einfach mal davon aus, dass "Ja".

Bei mir kommt die Fehlermeldung: Objektvariable nicht belegt!

Hat also nicht geholfen... Trotzdem Danke

Morgen werde ich noch einmal versuchen...

J. Kleis
http://www.schulzeug-online.de OpenOffice in der Förderschule...
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Listbox-Problem

Beitrag von turtle47 »

ich gehe davon aus, dass die Fehlermeldung hier kommt:

Code: Alles auswählen

Position =  inhalt.selecteditempos
Überprüfe mal den Namen Deiner Listbox.
Es ist z.B. ein Unterschied zwischen Listbox1 oder ListBox1

Edit: Mir ist gerade noch etwas aufgefallen! Setze am Anfang des Codes mal:

Code: Alles auswählen

Dim oDialog1 as Object
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

Re: Listbox-Problem

Beitrag von jkl »

Hallo,

was ich nicht mehr zu glauben wagte: Es klappt. Danke! Werde mich morgen daran machen meine Notlösung noch einmal zu überarbeiten....

Gute Nacht!

J. kleis
http://www.schulzeug-online.de OpenOffice in der Förderschule...
Antworten