Combobox datei auswählen und in Listview Darstellen. RegExp??

  • Hey,
    habe einen ordner @scritdir &'\csv\
    Dort liegen verschiedene csv tabelen ich will den inhalt des Vezeichnisse auflisten und einen auswählen.

    anschliessen die csv in der listview darstellen;
    so sieht die csv aus;
    listview1a;listview2;listview3;listview4;listview5;listview6;listview7;listview8;listview9;
    listview1b;listview2;listview3;listview4;listview5;listview6;listview7;listview8;listview9;
    listview1c;listview2;listview3;listview4;listview5;listview6;listview7;listview8;listview9;
    listview1d;listview2;listview3;listview4;listview5;listview6;listview7;listview8;listview9;
    listview1e;listview2;listview3;listview4;listview5;listview6;listview7;listview8;listview9;

    Ich will alles was in der ersten Spalte in der lisview 1 darstellen und sobald ich auf das item in der listview 1 Klicke,
    alles was in den anderen spalten ist in jeweils den anderen listviews darstellen.

    Kann mir jemand dabei helfen?


    Spoiler anzeigen
    [autoit]

    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=F:\autoit\entwicklung\CISM\Form1.kxf
    $Form1 = GUICreate("Form1", 949, 555, 197, 277)
    $ListView1 = GUICtrlCreateListView("1", 32, 96, 234, 422)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    ;$Combo1 = GUICtrlCreateCombo("Combo1", 32, 16, 233, 25)
    $Combo2 = GUICtrlCreateCombo("Liste Auswählen", 32, 72, 233, 25)
    ;$Input1 = GUICtrlCreateInput("Input1", 289, 16, 151, 21)
    ;$Input2 = GUICtrlCreateInput("Input1", 449, 16, 143, 21)
    ;$Input3 = GUICtrlCreateInput("Input1", 601, 16, 143, 21)
    ;$Input4 = GUICtrlCreateInput("Input1", 286, 50, 151, 21)
    ;$Input5 = GUICtrlCreateInput("Input1", 446, 50, 143, 21)
    ;$Input6 = GUICtrlCreateInput("Input1", 598, 50, 143, 21)
    ;$Input7 = GUICtrlCreateInput("Input1", 755, 20, 143, 21)
    ;$Input8 = GUICtrlCreateInput("Input1", 759, 49, 143, 21)
    $ListView2 = GUICtrlCreateListView("2", 274, 117, 394, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    $ListView3 = GUICtrlCreateListView("3", 273, 174, 394, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    $ListView4 = GUICtrlCreateListView("4", 274, 231, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)

    [/autoit] [autoit][/autoit] [autoit]

    $ListView5 = GUICtrlCreateListView("5", 422, 229, 146, 54)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    $ListView6 = GUICtrlCreateListView("6", 272, 287, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)

    [/autoit] [autoit][/autoit] [autoit]

    $ListView7 = GUICtrlCreateListView("7", 420, 288, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    $ListView8 = GUICtrlCreateListView("8", 272, 339, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)

    [/autoit] [autoit][/autoit] [autoit]

    $ListView9 = GUICtrlCreateListView("9", 418, 342, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit]

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (20. Mai 2010 um 09:58)

    • Offizieller Beitrag

    Musste mir jetzt erstmal ein paar CSV-Dateien erstellen, aber so sollte es funktionieren:

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $ListView[9]
    Global $sDir = @ScriptDir & '\csv\'
    Global $aFiles = _FileListToArray($sDir, '*.csv', 1), $sComboFiles
    If Not @error Then
    For $i = 1 To $aFiles[0]
    $sComboFiles &= $aFiles[$i] & '|'
    Next
    $sComboFiles = StringTrimRight($sComboFiles, 1)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=F:\autoit\entwicklung\CISM\Form1.kxf
    $Form1 = GUICreate("Form1", 949, 555, 197, 277)
    $ListView[0] = GUICtrlCreateListView("1", 32, 96, 234, 422)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)
    ;$Combo1 = GUICtrlCreateCombo("Combo1", 32, 16, 233, 25)
    $Combo2 = GUICtrlCreateCombo("Liste Auswählen", 32, 72, 233, 25)
    GUICtrlSetData(-1, $sComboFiles)
    ;$Input1 = GUICtrlCreateInput("Input1", 289, 16, 151, 21)
    ;$Input2 = GUICtrlCreateInput("Input1", 449, 16, 143, 21)
    ;$Input3 = GUICtrlCreateInput("Input1", 601, 16, 143, 21)
    ;$Input4 = GUICtrlCreateInput("Input1", 286, 50, 151, 21)
    ;$Input5 = GUICtrlCreateInput("Input1", 446, 50, 143, 21)
    ;$Input6 = GUICtrlCreateInput("Input1", 598, 50, 143, 21)
    ;$Input7 = GUICtrlCreateInput("Input1", 755, 20, 143, 21)
    ;$Input8 = GUICtrlCreateInput("Input1", 759, 49, 143, 21)
    $ListView[1] = GUICtrlCreateListView("2", 274, 117, 394, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)
    $ListView[2] = GUICtrlCreateListView("3", 273, 174, 394, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)
    $ListView[3] = GUICtrlCreateListView("4", 274, 231, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)

    [/autoit] [autoit][/autoit] [autoit]

    $ListView[4] = GUICtrlCreateListView("5", 422, 229, 146, 54)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)
    $ListView[5] = GUICtrlCreateListView("6", 272, 287, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)

    [/autoit] [autoit][/autoit] [autoit]

    $ListView[6] = GUICtrlCreateListView("7", 420, 288, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)
    $ListView[7] = GUICtrlCreateListView("8", 272, 339, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)

    [/autoit] [autoit][/autoit] [autoit]

    $ListView[8] = GUICtrlCreateListView("9", 418, 342, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Combo2
    $aRow = StringSplit(FileRead($sDir & GUICtrlRead($Combo2)), @CRLF, 3)
    _GUICtrlListView_DeleteAllItems($ListView[0])
    For $i = 0 To UBound($aRow) - 1
    $aCol = StringSplit($aRow[$i], ';', 2)
    GUICtrlCreateListViewItem($aCol[0], $ListView[0])
    Next
    Case $GUI_EVENT_PRIMARYUP
    $aInfo = GUIGetCursorInfo($Form1)
    If $aInfo[4] = $ListView[0] Then
    $iSelect = ControlListView($Form1, '', $ListView[0], 'GetSelected')
    If $iSelect <> '' Then
    $aCol = StringSplit($aRow[$iSelect], ';', 2)
    For $i = 1 To UBound($aCol) - 2
    _GUICtrlListView_DeleteAllItems($ListView[$i])
    GUICtrlCreateListViewItem($aCol[$i], $ListView[$i])
    Next
    EndIf
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Danke,
    leider hat sich das format geänder von der csv.
    autoit.de/wcf/attachment/9671/

    Und da ich in 2 Feldern nicht nur eine zeile habe sonder jede menge @crlf habe.
    Musste ich 2 editboxen nehmen
    Aber komme mit der Formatierung nicht klar da ich keinen trenner ";" habe
    Kann mir wieder jemand helfen?

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $ListView[9]
    Global $sDir = @ScriptDir & '\csv\'
    Global $aFiles = _FileListToArray($sDir, '*.csv', 1), $sComboFiles
    If Not @error Then
    For $i = 1 To $aFiles[0]
    $sComboFiles &= $aFiles[$i] & '|'
    Next
    $sComboFiles = StringTrimRight($sComboFiles, 1)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    #Region ### START Koda GUI section ### Form=F:\autoit\entwicklung\CISM\Form1.kxf
    $Form1 = GUICreate("BMC", 949, 555, 197, 277)
    $ListView[0] = GUICtrlCreateListView("1 Short decription", 32, 96, 234, 422)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)
    ;$Combo1 = GUICtrlCreateCombo("Combo1", 32, 16, 233, 25)
    $Combo2 = GUICtrlCreateCombo("Liste Auswählen", 32, 72, 233, 25)
    GUICtrlSetData(-1, $sComboFiles)
    $Inputun = GUICtrlCreateInput("", 32, 32, 151, 21)
    GUICtrlCreateLabel("Caller ", 32, 10, 60, 20)
    ;$Input2 = GUICtrlCreateInput("Input1", 449, 16, 143, 21)
    ;$Input3 = GUICtrlCreateInput("Input1", 601, 16, 143, 21)
    ;$Input4 = GUICtrlCreateInput("Input1", 286, 50, 151, 21)
    ;$Input5 = GUICtrlCreateInput("Input1", 446, 50, 143, 21)
    ;$Input6 = GUICtrlCreateInput("Input1", 598, 50, 143, 21)
    ;$Input7 = GUICtrlCreateInput("Input1", 755, 20, 143, 21)
    ;$Input8 = GUICtrlCreateInput("Input1", 759, 49, 143, 21)
    ;$ListView[1] = GUICtrlCreateListView("2 Detail", 273, 96, 294, 211)
    $ListView[1] = GUICtrlCreateEdit("2 Detail", 273, 96, 294, 211)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 280)
    ;$ListView[2] = GUICtrlCreateListView("3 Way of Solution ", 273, 305, 294, 211)
    $ListView[2] = GUICtrlCreateEdit("3 Way of Solution ", 273, 305, 294, 211)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 280)

    [/autoit] [autoit][/autoit] [autoit]

    $ListView[3] = GUICtrlCreateListView("4 Classification", 572, 95, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 140)

    [/autoit] [autoit][/autoit] [autoit]

    $ListView[4] = GUICtrlCreateListView("5 Compnent Type", 572, 150, 146, 54)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 140)
    $ListView[5] = GUICtrlCreateListView("6 Component", 572, 200, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)

    [/autoit] [autoit][/autoit] [autoit]

    $ListView[6] = GUICtrlCreateListView("7 Assined To Group", 572, 305, 146, 55)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)
    $ListView[7] = GUICtrlCreateListView("8 Submitter Group", 572, 369, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)

    [/autoit] [autoit][/autoit] [autoit]

    $ListView[8] = GUICtrlCreateListView("9 Client", 572, 420, 146, 54)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)
    ;$Userladen = GUICtrlCreateButton("Userladen", 800, 75, 75, 17, $WS_GROUP)
    ;$Userdel = GUICtrlCreateButton("löschen", 800, 58, 75, 17, $WS_GROUP)
    ;$CruserTickets = GUICtrlCreateButton("Erstellen", 800, 520, 75, 17, $WS_GROUP)
    ;$ListView10 = GUICtrlCreateListView("UserID|im Ad vorhanden", 750, 96, 186, 422)
    ;GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 80)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $var = RegRead("\\" & @ComputerName & "\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\winlogon", "Defaultusername")

    [/autoit] [autoit][/autoit] [autoit]

    ;GUICtrlSetData($Inputun, $user2)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Combo2
    $aRow = StringSplit(FileRead($sDir & GUICtrlRead($Combo2)), @CRLF, 3)
    _GUICtrlListView_DeleteAllItems($ListView[0])
    _GUICtrlListView_DeleteAllItems($ListView10)
    For $i = 0 To UBound($aRow) - 1
    $aCol = StringSplit($aRow[$i], ';', 2)
    GUICtrlCreateListViewItem($aCol[0], $ListView[0])
    Next
    Case $GUI_EVENT_PRIMARYUP
    $aInfo = GUIGetCursorInfo($Form1)
    If $aInfo[4] = $ListView[0] Then
    $iSelect = ControlListView($Form1, '', $ListView[0], 'GetSelected')
    If $iSelect <> '' Then
    $aCol = StringSplit($aRow[$iSelect], ';', 2)
    For $i = 1 To UBound($aCol) - 2
    _GUICtrlListView_DeleteAllItems($ListView[$i])
    GUICtrlCreateListViewItem($aCol[$i], $ListView[$i])
    Next
    EndIf
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Dateien

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Habe ich auch schon Probiert leider ohne erfolg.
    Muss dir mal die TXT anschauen ;(

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • oh sry die txt hatte ich übersehn^^


    komische anordnung in ner txt aber auswerten geht schon...

    bin in der schule, kann dir also kein script beispiel basteln. aber ich würde in etwa so vorgehn:


    datei in array einlesen (_Filereadtoarray oder so ähnlich)

    $i = 1

    while $i < anzahlzeilen

    while Zeile nr $i not = "-------" (am besten mit stringleft oder so)

    zeile $i mit stringsplit und trennzeichen "|" trennen

    die einzelnen gesplitteten inhalte in variable speichern

    $i +1

    wend

    zwischengespeicherte variable in listbox eintragen

    wend


    ich glaub zwar jetz nachdem ich den pseudocode geschrieben hab nicht dass du es verstehst aber probiern tu ichs mal^^


    scripten wär leichter :(

  • ????
    ehrlich gesagt verstanden habe ich es nicht????

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • ob du es dir einigermaßen so vorstellst weiß ich nicht

    besser kann ich leider nicht helfen.

    sitz in der schule und hab hier nur den editor^^

    d.h. das is alles ausn kopf geschrieben, gut möglich das syntax fehler drin sind


    Spoiler anzeigen
    [autoit]

    #Include <File.au3>
    #Include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Dim $read
    _Filereadtoarray(@Scriptdir &"\BMC_Di.txt", $read); datei in array einlesen
    $i = 1; zähler für die zeilen
    dim $erg[8]; für die ausgelesenen zeilen, als zwischenspeicher
    while $i < $read[0] ; von der ersten bis zur letzten zeile
    while Not (Stringleft($read[$i], 1) = "-"); suche die zeilen die mit "-" beginnen
    $split = Stringsplit($read[$i], "|"); die zeile mit | splitten
    for $k = 0 to $split[0]-3; das gesplittete in ein temp array schreiben
    while (StringRight($split[$k+2], 1) = " "); geht mit regex viel besser aber ohne hilfedatei bekomm ich das nicht hin
    $split[$k+2] = StringTrimRight($split[$k+2], 1)
    wend
    $erg[$k] &= $split[$k+2]
    next
    $i += 1
    wend
    _arraydisplay($erg); das kannste dann in deine listview schreiben
    $i += 1
    wend

    [/autoit]
  • Danke,
    leider ohne erfolg...;-(

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • das soll alles in die Gui:
    siehe TXT.
    BMCR_T_Short DescriMTion = $ListView[0] 'Listview'
    BMCR_T_Details =$ListView[1] 'EditBox'
    Task_Kurzbeschreibung =$ListView[2] 'EditBox
    BMCR_T_Classification =$ListView[3] 'Listview'
    BMCR_T_Component Type =$ListView[4] 'Listview'
    BMCR_T_Component =$ListView[5] 'Listview'
    BMCR_T_Submitter Group =$ListView[6] 'Listview'
    BMCR_T_Client =$ListView[7] 'Listview'
    BMCR_T_Classification =$ListView[8] 'Listview'

    Leider keine bestimmte anzahl an zeichen.
    Trennzeichen??
    Habe ich indem sinne... Glaube ich
    Pipe | wäre das nächste feld und alles was in dem feld ist jeweils.

    ist eventuell in der TXT besser zu verstehen.


    Oder ist das Garnicht möglich?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Es findet kein ende finde leider keine lösung kann mir jemand helfen?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."