Listbox mit ausgelesenen "Daten" füllen

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

Moderator: Moderatoren

felix
***
Beiträge: 54
Registriert: Di, 20.03.2007 17:09
Kontaktdaten:

Listbox mit ausgelesenen "Daten" füllen

Beitrag von felix »

Hallo,

ich bins schon wieder.

Ich bin gerade dabei mich ins Makro schreiben einzuarbeiten, doch manchmal weiß ich nicht weiter. Ihr habt mir hier auch schon oft geholfen und darum muss ich jetzt noch mal etwas fragen.

Ich möchte aus einem Verzeichnis die vorhandenen Dateien auslesen, und dann an eine Listbox weitergeben.

Das Auslesen des Verzeichnisses funktioniert soweit, wenn ich dann aber die Ausgelesenen Dateien an die Listbox übergebe werden diese alle in einer Zeile angzeigt und nicht wie benötigt z.B. 3Dateien für jede Datei eine Zeile in der Listbox.

Diesen Code habe ich bis jetzt:

Code: Alles auswählen

Sub ListeFuellen

DIM oListBox as Object 
Dim s as String 
DIM sPfad as String
DIM nextFile as String, i%
DIM aListe as String

sPfad="File:///F:/RWK%20Auswertung/Ergebnislisten/"	'Verzeichnis auslesen; Makros in OO S.133
i = 1
nextFile = Dir(sPfad, 0) 'die erste Datei
while nextFile <> ""
	s = s & Chr(13) &nextFile
	i = i+1
	nextFile = Dir
Wend


 oListbox = oDlg2.getControl("ListBox1")		'Listbox füllen mit Dateinamen; Makros in OO S.563
 aListe = s
 oListBox.removeItems(0, oListbox.getItemCount())
 oListBox.addItem(aListe, 0)
End Sub
Vielleicht kann mir jemand weiterhelfen, Vielleicht ist mein Ansatz auch total falsch.

Als Anhang ein Zip-Archiv mit einem Sreenshoot

MfG Felix
Dateianhänge
DLG2_1.zip
So sieht das Ergebnis bis jetzt aus
(4.78 KiB) 79-mal heruntergeladen
felix
***
Beiträge: 54
Registriert: Di, 20.03.2007 17:09
Kontaktdaten:

Re: Listbox mit ausgelesenen "Daten" füllen

Beitrag von felix »

Hallo,

erstmal danke.

da ich das ganze über einen Dialog laufen lasse musste ich einige Dinge abändern.
Habs jetzt porbiert aber leider funktionierts nicht.

ich bekommen immer die Meldung ( Zeile im Code markiert (REM##########))
Basic Laufzeitfehler.
Eigenschaft oder Methode nicht gefunden.

Code: Alles auswählen

Sub ListeFuellen

    DIM oListBox as Object
    Dim s as String
    DIM sPfad as String
    DIM nextFile as String, i%
    DIM aListe as Variant
	
	Dim arrayofstrings as variant
	
    sPfad="File:///F:/RWK%20Auswertung/20%20Schuss/Ergebnislisten/"   'Verzeichnis auslesen; Makros in OO S.133
    i = 1
    nextFile = Dir(sPfad, 0) 'die erste Datei
    while nextFile <> ""
       s = s & Chr(44) &nextFile
       i = i+1
       nextFile = Dir
    Wend
    MsgBox(s, 0, ConvertFromURL(sPfad))

    oListBox = oDlg2.getControl("ListBox1")      'Listbox füllen mit Dateinamen; Makros in OO S.563
    aListe = s
    
    reDim arrayofstrings
    arrayofstrings = split(aListe,",")

REM ##########################################################
    oListBox.stringitemlist = arrayofstrings() '<-Hier kommt Meldung s.o.
REM ##########################################################    
    oListBox.removeItems(0, oListbox.getItemCount())
    oListBox.addItem(aListe, 0)
End Sub
Was hab ich falsch gemacht?

MfG Felix
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Listbox mit ausgelesenen "Daten" füllen

Beitrag von turtle47 »

Hallo Felix,

ich habe es nur so hinbekommen. (Pfad noch anpassen)

Code: Alles auswählen

Sub ListeFuellen
	Dim oDialog as Object
	DIM oListBox as Object
	DIM s as Variant
	DIM sPfad as String
	DIM nextFile as String, i%
	DIM aListe as Variant
       
	sPfad="File:///C:/"   'Achtung:Pfad anpassen
	i = 1
	nextFile = Dir(sPfad, 0) 'die erste Datei
	while nextFile <> ""
	s = s & Chr(44) &nextFile
	i = i+1
	nextFile = Dir
	Wend
	'MsgBox(s, 0, ConvertFromURL(sPfad)
	aListe = s
	reDim arrayofstrings
	s = split(s,",") 
	oListBox = oDialog1.getControl("ListBox1") 
	oListBox.additems(s(),0)
	End Sub
Vielleicht kannst Du ja damit was anfangen.

Viel Erfolg.

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
felix
***
Beiträge: 54
Registriert: Di, 20.03.2007 17:09
Kontaktdaten:

Re: Listbox mit ausgelesenen "Daten" füllen

Beitrag von felix »

Hallo,

Vielen Dank an euch.

es hat geklappt wunderbar. :D

Nochmals Danke

Mfg Felix
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Listbox mit ausgelesenen "Daten" füllen

Beitrag von turtle47 »

Hallo Zusammen,

ich habe mich hier im Forum intensiv umgeschaut und jede Menge gegoogelt. Für mich bleibt die Frage aber immer noch offen, warum

Code: Alles auswählen

stringitemlist
nicht funktioniert.

Kann mir (uns) einer der Spezialisten das bitte mal erklären? Ich währe sehr dankbar dafür.

Für mich füllt

Code: Alles auswählen

stringitemlist
eine Listbox und

Code: Alles auswählen

additems
fügt neue Einträge hinzu.
Ich finde, dass das doch ein Unterschied ist.

Schöne Grüße.

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
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Listbox mit ausgelesenen "Daten" füllen

Beitrag von Stephan »

Kann mir (uns) einer der Spezialisten das bitte mal erklären?
Hallo Jürgen,

ich habe momentan keine Zeit und habe den Thread nur überflogen. Schau doch bitte in den ersten Thread hier im Basic-Forum, dorch habe ich eine Beispieldatei für ein Kombinationsfeld verlinkt, die auch dieses Füllen der Liste umfasst. Vielleicht gibt Dir der dort vorhandene Code eine Antwort.


Gruß
Stephan
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Listbox mit ausgelesenen "Daten" füllen

Beitrag von turtle47 »

Hallo Rainer,

vielen Dank für die Bemühungen um die Klärung meiner Frage.
Rainer01 hat geschrieben:Ich bin allerdings nicht sicher, ob StringItemList ein Array zugewiesen werden kann.
In diesem Thread schrieb Thomas:
Um die Listbox zu Füllen, gibt es die Eigenschaft "stringItemList" womit du einen Array mit den Listeneinträgen (Strings) übergibst. also z.B.
Code: Alles auswählen
dim aListe()
aListe = array("eins", "zwei", "drei")
ListBox.StringItemList = aListe()
Danach hat er geschrieben:
Toxitom hat geschrieben:hmm, du hat recht., der Code war auf "Dialog" gemünzt, meine Erklärung aber auf "Formular". Die Listbox ist ähnlich, im Dialog hast du jedoch mehr Möglichkeiten. Das, was ich sagte, bezog sich auf das Formular
Demnach ist es einen Unterschied zwischen Dialog und Formular.
Die Erklärung dazu habe ich eben hier im Forum dann gefunden:
Toxitom hat geschrieben:Dialoge und Formulare haben zwar an sich die gleichen (oder beser gesagt ähnliche) Controlelemente, diese werden aber unterschiedlich angesprochen und bearbeitet.
Jedes Kontrollelement hat eine Model-Ebene und eine Viewebene, beide können Eigenschaften und Methoden aufweisen - aber eben unterschiedliche.
Da du es mit Formularen zu tun hast, interessiert eigentlich nur die View-Ebene. Und bei Listboxen gibt es hier nur wenige Eigenschaften oder Methoden, auf jeden Fall keine "addItem()". Die gibt es nur bei Dialogen!
Willst du die Liste einer Listbox im Formular füllen, musst du die Eigenschaft "StringItemList" nutzen, welche einen Array aller Listeneinträge zurückliefert bzw. setzt.
Nochmals Danke für die Hilfe auch an Stephan.

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
Antworten