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:

    [autoit]

    _GUICtrlListView_GetItemTextString($hListView, -1)

    [/autoit]

    Jedoch ohne Erfolg..

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

    [autoit]

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

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

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

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

    Func exitMain()
    Exit
    EndFunc

    [/autoit]


    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...

    [autoit]


    #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)

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

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

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

    MsgBox(0,"",$handle1)

    [/autoit]

    2 Mal editiert, zuletzt von butter (11. März 2014 um 19:42)

  • 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:

    Spoiler anzeigen
    [autoit]

    GUICreate("Example", 186, 372, 192, 125)
    GUISetOnEvent(-3, 'exitMain')
    $hListView = GUICtrlCreateListView("titel", 2, 2, 178, 268) ;<-- es MUSS mindestens eine Spalte bei einem LitView enthalten sein.
    $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")

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

    ;--> Du hattest kein ListView erstellt. Es muss aber natürlich ein ListViewItem da sein!
    GUICtrlCreateListViewItem("test", $hListView)

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

    GUISetState(@SW_SHOW)

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

    Sleep(2000) ;Gebe 2 Sek. Zeit um etwas anzuklicken

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

    Local $selected = GUICtrlRead($hListView)
    Local $selected_text=GUICtrlRead($selected)
    MsgBox(0, $selected, $selected_text) ;zum debug anzeigen

    [/autoit]