Hilfe beim Übertragen von einem Array in einen Listview

  • HI Leuts,

    eventuell steh ich heute soweit neben mir das ichs nicht seh oder ich versteh schlicht nicht was ich falsch mach... ich bedank mich jetzt schon mal für die vielen hilfreichen Antworten.

    Ich erstelle das Array fütter es mit den nötigen Daten soweit alles OK
    Wenn ich das Array jetzt in einem Listview einblenden will zeigt er mir nichts an. ?(

    Zeile 37 Array wird sauber angezeigt.
    Zeile 40 Msg Box kommt mit den passenden Werten

    Listview bleibt komplett leer.....

    [autoit]


    Switch $objRecordSet.RecordCount
    Case 0 ; dieser User wurde nicht gefunden
    Return 0
    Case 1 ; User wurde eindeutig identifiziert anhand des Namens
    GUISetState(@SW_SHOW, $Form2) ; Fenster zur Benutzerwahl wieder einblenden
    Return 1
    Case Else ; User existiert, aber mehrere Treffer (Suchbegriff: Meier ^^)
    Dim $treffer_arry[1]
    $z = ""
    Do
    $y = $objRecordSet.Fields(0).Value ; FQDN-Name des Users
    If Not StringInStr($y, "ou=Empfänger") Then ; skip all mail-only accounts (ou=benutzer,ou=empfänger)
    $oUsr = ObjGet($objRecordSet.Fields(0).Value) ; Retrieve the COM Object for the logged on user
    _ArrayAdd($treffer_arry, $oUsr.sn & "," & $oUsr.givenName & "|" & $oUsr.samAccountName)
    EndIf
    $objRecordSet.MoveNext
    Until $objRecordSet.EOF
    If UBound($treffer_arry) = 2 Then ; Array hat nur 1 Element => die anderen Treffer waren reine Mailempfänger und wurden beim Übertragen ins Array übergangen
    $x = StringInStr($treffer_arry[1], "|")
    GUICtrlSetData($edit, StringMid($treffer_arry[1], $x + 1)) ; die Userkennung wird im Suchfenster eingetragen
    GUISetState(@SW_SHOW, $Form2) ; Fenster zur Benutzerwahl wieder einblenden
    Return -1
    Else ; aha, es gibt tatsächlich mehrere User die in Frage kommen
    GUISetState(@SW_HIDE, $Form2)
    $Form3 = GUICreate($texts[$language][69], 350, 355)
    $Enter_key2 = GUICtrlCreateDummy()
    Dim $b_AccelKeys[1][2] = [["{ENTER}", $Enter_key2]] ; Hotkey-Array für das Auswerten der Enter-Taste in Form3
    GUISetAccelerators($b_AccelKeys, $Form3)
    $liste = GUICtrlCreateListView($texts[$language][70], 5, 40, 340, 280)
    MsgBox($MB_SYSTEMMODAL, "Title",$liste, 10) ; <-- debug
    _GUICtrlListView_SetColumnWidth($liste, 100, 250)
    $btn_userwahl = GUICtrlCreateButton("Ok", 5, 325, 340, 25)
    GUICtrlCreateLabel($texts[$language][71] & UBound($treffer_arry) - 1 & $texts[$language][72], 5, 5, 290, 30)
    _ArrayDelete($treffer_arry, 0) ; das leere erste Feld löschen
    _ArraySort($treffer_arry) ; Treffer sortieren
    _ArrayDisplay($treffer_arry); <-debug
    For $i = 1 To UBound($treffer_arry) - 1 ; und alle Ergebnisse in Listview kopieren
    GUICtrlCreateListViewItem($treffer_arry[$i], $liste)
    MsgBox($MB_SYSTEMMODAL, "Title", $treffer_arry[$i]& "....." & $liste, 10) ; <- debug
    Next
    GUISetState(@SW_SHOW, $Form3)
    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit
    If ($msg = $btn_userwahl) Or ($msg = $Enter_key2) Then
    $x = GUICtrlRead($liste)
    If $x <> "" Then ; nur wenn auch ein User gewählt wurde...
    $y = GUICtrlRead($liste) ; die Control-ID des markierten Listview-Items holen
    $y = GUICtrlRead($y) ; das ListviewItem auslesen
    $tmp = StringSplit($y, "|") ; aufteilen und nur die UserID behalten
    $x = GUICtrlSetData($edit, $tmp[2]) ; die Userkennung wird im Suchfenster eingetragen
    ExitLoop
    EndIf
    EndIf
    WEnd
    GUIDelete($Form3) ; Auswahl-GUI löschen
    GUISetState(@SW_SHOW, $Form2) ; Fenster zur Benutzerwahl wieder einblenden
    Return -1 ; User wurde im Formuar eingetragen
    EndIf
    EndSwitch

    [/autoit]
    • Offizieller Beitrag

    Nun, da Du kein lauffähiges Scriptbeispiel mitlieferst kann man nur raten.
    In Zeile 14 addierst Du zwei "Spalten" (Trenner "|" vorhanden) in das Array $treffer_arry.
    Beim erstellen des Listview benutzt Du eine Variable ($texts[$language][70]), dessen Inhalt ich nicht kenne. Wird hier ebenfalls ein Listview mit zwei Spalten erzeugt?
    Wenn nein, dann hast Du Deinen Fehler gefunden. ;)