Seite 1 von 1

Inahlt einer Listbox in ein Array füllen

Verfasst: Mi, 15. Nov 2017 15:20
von vorti
Hallo,
ich blick gerade mal wieder nicht durch.
Ich fülle ein Array mit directory und übergebe das dann in eine Listbox. Bevor ich im Programm zur Listbox komme, habe ich ein SLE Feld, wo ich z.B.
ein Buchstabe eingeben und dann werden in der Listbox nur die ensprechenden Dateien angezeigt die mit diesem beginnen.

Mein Problem ist nun, dass die Position der Listbox natürlich nicht mehr zur Position in dem Array passt. Leider will es mir nicht gelingen, das ich die Strings aus der Listbox in ein neues Array übergebe.
Hier mal noch der QC

Code: Alles auswählen

FUNCTION FarrayToListBox( oListBox, cDateipfad, aTxtFiles )
********************************************
local i := 0,;
      nLen := Len( aTxtFiles ),;
      cDatei

do while ++i <= nLen
        cDatei :=  aTxtFiles[i, F_NAME]

   if upper( substr( cDateipfad, 1, Len( cDateipfad ))) == upper( substr( cDatei, 1, Len( cDateipfad )))
      oListBox:addItem( cDatei )
	AAdd( ZWEITESARRAY, cDatei )
   endif
end do


return oListBox

Code: Alles auswählen

nPos := oListBox:getData()[1]
cDateipfad := ZWEITESARRAY[nPos]
oI_SLE:setData( cDateipfad )

Re: Inahlt einer Listbox in ein Array füllen

Verfasst: Mi, 15. Nov 2017 18:43
von AUGE_OHR
hi,

ein "zusätzliches" SLE benötigt man eigentlich nicht denn die Listbox reagiert ja auf den ersten Buchstaben.

Code: Alles auswählen

nPos := oListBox:getData()[1]
cDateipfad := ZWEITESARRAY[nPos]
warum du es auf das 2nd Array beziehst ist mir nicht klar ...

Code: Alles auswählen

cDateipfad := aTxtFiles[nPos]

Re: Inahlt einer Listbox in ein Array füllen

Verfasst: Do, 16. Nov 2017 8:25
von vorti
Das SLE und die Listbox werden separat aufgerufen (soll so sein, ist nicht von mir).
Wenn ich jetzt mein Array fülle (mit directory), sagen wir mit Dateiname A1-A10 und B1-B10 und in das SLE ein "B" tippe, danach die Listbox aufrufe, ist die Listbox auch nur mit B1-B10 gefüllt. Wenn ich jetzt daraus z.B. das 3te Element wähle, bekomme ich ja aus dem "ersten Array" trotzdem "A3".
Deswegen brauche ich das zweite Array, welches nur mit den Elementen B1-B10 gefüllt ist (oder Alternativ halt ne bessere Idee wie ich diese auswähle).

Re: Inahlt einer Listbox in ein Array füllen

Verfasst: Do, 16. Nov 2017 8:51
von AUGE_OHR
JA ... du füllst ja nur die auf und suchst nicht inkrementell wo man mehr als 1 Buchstaben eingibt.

ok ... also dann so

Code: Alles auswählen

   oListbox:itemSelected := {|u1,u2,o| cSuch := o:GetItem( o:Getdata()[1] ) }
gibt dir den "Text" des gewählten Elements. den könntest du zum suchen im grossen Array nehmen.

Code: Alles auswählen

   nPosi := ASCAN(aTxtFiles, { |x| x[F_NAME] = cSuch } )

Re: Inahlt einer Listbox in ein Array füllen

Verfasst: Do, 16. Nov 2017 8:56
von vorti
Ja, habe es eben selbst herausgefunden. Wenn man "getItem" kennt ist es ganz einfach.