[gelöst] Listbox-Problem

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: [gelöst] Listbox-Problem

Re: Listbox-Problem

von jkl » So, 03.02.2008 22:17

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

Re: Listbox-Problem

von turtle47 » So, 03.02.2008 20:21

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

Re: Listbox-Problem

von jkl » So, 03.02.2008 20:14

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

Re: Listbox-Problem

von turtle47 » So, 03.02.2008 20:06

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

Re: Listbox-Problem

von jkl » So, 03.02.2008 19:35

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

Re: Listbox-Problem

von komma4 » So, 03.02.2008 18:28

(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.

Re: Listbox-Problem

von komma4 » So, 03.02.2008 18:19

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?

Re: Listbox-Problem

von jkl » So, 03.02.2008 16:31

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

[gelöst] Listbox-Problem

von jkl » Sa, 02.02.2008 19:47

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

Nach oben