checklistbox

nice_old_grizzly

Grünschnabel
hi,
ich lese eine einfache (text)datei über lineinput und eine for-next schleife mit hilfe des splitbefehles in eine checklistbox ein. die daten werden auch korrekt angezeigt in der box. setze ich dann den checkhaken, dann gibt er mit immer nur das letzte element aus - egal welches element ich anklicke.
wie muss in die box eingelesen werden und wie müssen die daten beim klick übernommen werden, damit sie hinterher für weitere aktionen genutzt werden können.
in der mir zur verfügung stehenden literatur gibt es keinen vernünftigen hinweis darauf.

vielen dank und gruß von
tom
 
hi tombe,
zunächst dank für deine antwort. im folgenden einige spezifikationen zu meiner vorgehensweise:

-> struktur der zeilen in der textdatei: 0,"*Rechteck*Bild-Datei.:-> *0*"
-> Form1.dat_feld_temp = Form1.Splitter_01 + (Form1.dat_feld_temp + Form1.Splitter_01 +
"Bild-Datei.:-> " + Form1.Splitter_01 + Form1.fz.ToString + Form1.Splitter_01)
=> als splitter dient das zeichen alt255
-> die datei wird zeilenweise ausgelesen, wobei Form1.fz die verwaltete Zeilennummer innerhalb der
datei ist und list_feld_sort(Form1.hopsundex) das zielfeld ist.

auszug aus dem listing:
Visual Basic:
Public Class Form1
    Inherits System.Windows.Forms.Form
    Public Shared hopsundex As Integer = 0
    Public Shared schrottundex As String = Nothing
    Public Shared Splitter_01 As String = "*" '<- Alt255
    Public Shared a As Integer = 0
    Public Shared e As Integer = 0
    Public Shared z As Integer = 0
    Public Shared fn As Integer = 0
    Public Shared fz As Integer = 0
    Public Shared dn As String = Nothing
    Public Shared dp As String = Nothing
    Public Shared dat_feld_temp As String = Nothing
    Public Shared lbl_feld_temp As String = Nothing
    Public Shared lbl_feld_ausg As String = Nothing
    Public Shared lst_feld_temp As String = Nothing
    Public Shared lst_feld_sort(9) As String
    Public Shared y As String


    Function dateiread()
        Form1.dat_feld_temp = Nothing
        Form1.lbl_feld_temp = Nothing
        Form1.fz = 0
        Do
            On Error GoTo fehler
            Form1.dat_feld_temp = (LineInput(fn))
            Form1.lbl_feld_temp = Form1.dat_feld_temp
            Form1.hopsundex = 0
            y = Form1.lbl_feld_temp
            Call listenformat()
            lst_datei_ausgabe.Visible = True
            lst_datei_ausgabe.Items.Add(Form1.lbl_feld_ausg)
            chk_datei_ausgabe.Items.Add(Form1.lbl_feld_ausg)
            Form1.fz = Form1.fz + 1
            GoTo ok
fehler:
            Exit Do
ok:
        Loop Until EOF(fn)

    End Function

 Function listenformat()
        Dim x As String() = y.Split(New Char() {",", Form1.Splitter_01})
        For Form1.hopsundex = 0 To x.GetUpperBound(0)
            lst_feld_sort(Form1.hopsundex) = x(Form1.hopsundex)
            If Form1.hopsundex = 0 Then
                lst_feld_sort(Form1.hopsundex) = "Nr.: " + lst_feld_sort(Form1.hopsundex)
                Form1.z = Len(Trim(x(Form1.hopsundex)))
                If Form1.z > 11 Then
                    lst_feld_sort(Form1.hopsundex) = Mid$(lst_feld_sort(Form1.hopsundex), 1, 13)
                    lst_feld_sort(Form1.hopsundex) = lst_feld_sort(Form1.hopsundex) + "•••"
                End If
                If Form1.z < 11 Then
                    Do
                        lst_feld_sort(Form1.hopsundex) = lst_feld_sort(Form1.hopsundex) + " "
                        Form1.z = Form1.z + 1
                    Loop Until Form1.z > 11
                End If
            End If
            If Form1.hopsundex = 2 Then
                Form1.z = Len(Trim(x(Form1.hopsundex)))
                If Form1.z > 25 Then
                    lst_feld_sort(Form1.hopsundex) = Mid$(lst_feld_sort(Form1.hopsundex), 1, 23)
                    lst_feld_sort(Form1.hopsundex) = lst_feld_sort(Form1.hopsundex) + "•••"
                End If
                If Form1.z < 25 Then
                    Do
                        lst_feld_sort(Form1.hopsundex) = lst_feld_sort(Form1.hopsundex) + " "
                        Form1.z = Form1.z + 1
                    Loop Until Form1.z > 25
                End If
            End If
            If Form1.hopsundex = 4 Then
                Form1.z = Len(Trim(x(Form1.hopsundex)))
                If Form1.z > 25 Then
                    lst_feld_sort(Form1.hopsundex) = Mid$(lst_feld_sort(Form1.hopsundex), 1, 23)
                    lst_feld_sort(Form1.hopsundex) = lst_feld_sort(Form1.hopsundex) + "•••"
                End If
                If Form1.z < 25 Then
                    Do
                        lst_feld_sort(Form1.hopsundex) = lst_feld_sort(Form1.hopsundex) + " "
                        Form1.z = Form1.z + 1
                    Loop Until Form1.z > 25
                End If
            End If
            Form1.lbl_feld_ausg = lst_feld_sort(0) + lst_feld_sort(2) + vbTab + lst_feld_sort(3) 
                                                                                                                                     + lst_feld_sort(4) 
        Next


    End Function

vermutlich mache ich als anfänger einen "typischen" fehler. ziel soll im endeffekt sein, dass über die
listbox entsprechende erläuterungen, aufgaben und lösungshilfen von den schülern aufgerufen werden können.

gruß tom
 
Bitte verwende bei Code immer die jeweiligen Tags (in diesem Fall [code=vb] bzw. [/code]), der ganze Code ist dann leichter zu lesen und kann auch entsprechend formatiert (eingerückt) werden.

Mir stellt sich auch die Frage, welche VB-Version du hier hast. Für mich sieht das nach .NET aus (VB.NET, VB05, VB08, VB10), wenn dem so wäre, würde der Thread in ein anders Unterforum gehören.


Der Doc!
 
Sorry,
das mit den durchgehend klein geschriebenen Texten habe ich beim ersten Durchlesen der Netiquette überlesen.
Und du hast recht - ich bin im falschen Forum, da ich tatsächlich .net (2003) verwende. Ich werde daher meine Frage im Forum NET erneut stellen - ohne gegen die Bestimmung des Mehrfachpostens verstoßen zu wollen.
Bedanke mich für die Antwort.
Gruß Tom
 
Kein Problem, ich lass den Thread einfach verschieben.

Kannst du eine Textdatei (bzw. dein bisheriges Projekt), so wie sie bei dir aufgebaut ist mal hier reinstellen? Dann tu ich mir mit dem Code leichter und kann das ganze etwas straffen und korrigieren.


Der Doc!
 
ich habe das Problem jetzt so gelöst, dass ich den Array zweidimensional definiert habe und als erstes die Zeilennummer der Textdatei und als zweites die Nummer die sich aus dem Splitvorgang ergibt wegschreibe.
Danke gleichwohl allen die geantwortet haben herzlich.
Gruß Tom
 

Neue Beiträge

Zurück