ListView, Item Auslesen

  • Hallo AutoIT :)


    ich wollte fragen zu ListView wie man den Text (String) von dem aktuell markierten Item ausliest


    Ich hab schon einige Funktionen ausprobiert
    z.B Wie:

    _GUICtrlListView_GetItemTextString($hListView, -1)


    Jedoch ohne Erfolg..


    Wie kann ich den String/Text von dem aktuell markierten Item auslesen und in eine Variable speichern ?


    GUICreate("Example", 186, 372, 192, 125)
    GUISetOnEvent(-3, 'exitMain')
    $hListView = GUICtrlCreateListView("", 2, 2, 178, 268)
    GUISetState(@SW_SHOW)


    $handle = GUICtrlGetHandle($hListView)
    $handle1 = _GUICtrlListView_GetItemTextString($handle, -1)


    Func exitMain()
    Exit
    EndFunc



    Danke !! :S

  • Bitte nöchstesmal ein funktionierendes Beispiel


    Mit _GUICtrlListView_GetSelectedIndices die markierten Items ermitteln.
    Dann mit _GUICtrlListView_GetItemText den Text ermitteln.


    Ups, da war jemand schneller :D

  • Hi,


    Danke für die schnelle Antworten :)


    Aber bei mir wird da ein leerer String zurückgegeben...



    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GuiImageList.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    GUICreate("Example", 186, 372, 192, 125)
    GUISetOnEvent(-3, 'exitMain')
    $hListView = GUICtrlCreateListView("", 2, 2, 178, 268)
    $Button1 = GUICtrlCreateButton("Hinzufügen", 8, 272, 169, 25)
    GUICtrlSetOnEvent($Button1,"_Hinzufug")
    $Button3 = GUICtrlCreateButton("Löschen", 8, 304, 169, 25)
    GUICtrlSetOnEvent($button3,"_delete")
    $Button4 = GUICtrlCreateButton("Infos", 8, 336, 169, 25)
    GUICtrlSetOnEvent($Button4,"_Info")
    GUISetState(@SW_SHOW)
    $handle = GUICtrlGetHandle($hListView)


    $guae = _GUICtrlListView_GetSelectedIndices($hListView)
    $handle1 = _GUICtrlListView_GetItemText($guae,0)


    MsgBox(0,"",$handle1)

  • Da dein Listview nicht viel mit UDFs (User Defined Functions = Benutzerdefinierten Funktionen) arbeitet brauchst du auch bei deinem gewünschten "Vorhaben" keine UDF einzusetzen. Gehe einfach wie folgt vor:


    • Lies mit GUICtrlRead das aktuell markierte Item aus der ListView aus.
      Du bekommst die CtrlID des ListViewItems. Falls nichts markiert ist wird 0/ein leerer String zurückgegeben.
    • Lies wieder mit GUICtrlRead den Text aus dem ListViewItem aus.

    Das ist das Grundprinzip. Allerdings sehe ich in deinem Skript einige Fehler die jegliches Auslesen markierter Items verhindern.
    Ich habe die Fehler korrigiert und entsprechende Kommentare in das folgende Beispielskript eingefügt: