_GUICtrlListView_GetItemText($ListView1, _GUICtrlListView_GetSelectedIndices($ListView1), 2)

  • Hiho,

    ich würde gerne rausfinden, welche zeile markiert ist und aus dieser zeile verschiedene spaltenwerte auslesen.
    nach langer suche habe ich dann GetSelectedIndices gefunden, was mir die Zeile zurückgibt.

    aber warum geht folgendes nicht?

    [autoit]

    MsgBox(0, _GUICtrlListView_GetSelectedIndices($ListView1), _GUICtrlListView_GetItemText($ListView1, _GUICtrlListView_GetSelectedIndices($ListView1), 2))

    [/autoit]

    Rückgabe ist im Titel = 2, im Text nichts ....
    Was stimmt hier nicht?

    Zeile 3 ist markiert, da Null-Index ist die 2 also richtig. Warum kann er mit GetItemText nun nicht den Wert aus Zeile 3 (NullIndex2) Spalte NullIndex 2 ziehen?

    PS: wenn ich manuell den Wert 2 als Zeile eingebe, geht es ...

    • Offizieller Beitrag

    Wie hast du das Listview erzeugt?
    Die UDF arbeiten zuverlässig, wenn das Handle verwendet wird. Dieses wird auch von _GUICtrlListView_Create() zurückgegeben. Falls du mit GUICtrlCreateListView() gearbeitet hast, lass dir das Handle ausgeben:

    [autoit]

    $ListView = GUICtrlCreateListView()
    $hListView = GUICtrlGetHandle($ListView)

    [/autoit]
  • Hi BugFix, Tip hat geholfen ... wobei ich das in der letzten version wieder entfernt hatte, da es ganz gut ohne extra GuiCtrlGetHandle ging.

    so funzt es nun (ist aber auch komisch):

    [autoit]

    _GUICtrlListView_GetItemText(GUICtrlGetHandle($ListView1), _GUICtrlListView_GetSelectedIndices($ListView1), 9)

    [/autoit]

    Dafür hab ich ein neues Prob, warum geht das nicht?

    [autoit]

    Func _GetItem()
    $GetItem[0] = _GUICtrlListView_GetItemText(GUICtrlGetHandle($ListView1), _GUICtrlListView_GetSelectedIndices($ListView1), 0)
    $GetItem[1] = _GUICtrlListView_GetItemText(GUICtrlGetHandle($ListView1), _GUICtrlListView_GetSelectedIndices($ListView1), 9)
    EndFunc

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

    Func _Rename_Window()
    _GetItem()
    $Win = $GetItem[0]
    $Handl = $GetItem[1]
    $NewTitle = InputBox("Set New Title", $Handl, $Win, Default, 400, 50, Default, Default, Default, $Form1_1)
    WinSetTitle($Handl, "", $NewTitle)
    _GUICtrlListView_SetItemText($ListView1, _GUICtrlListView_GetSelectedIndices($ListView1), $NewTitle)
    EndFunc

    [/autoit]

    $Win = Titel
    $Handl = Handle

    wird beides richtig aus dem ListView gezogen und auch dort wieder eingetragen, aber WinSetTitle will nicht ...

    EDiT:

    Wieso funzt das mit den Handles denn nicht, folgendes geht auch nur, wenn ich $Win anstatt $Handl verwende, der/das richtige Handle wird aber zurückgegeben:

    [autoit]

    Func _Set_OnTop()
    _GetItem()
    $Win = $GetItem[0]
    $Handl = $GetItem[1]
    $WinIsOnTop = _WinIsOnTop($Win)
    If $WinIsOnTop = 1 Then
    WinSetOnTop($Win, "", 0)
    Else
    WinSetOnTop($Win, "", 1)
    EndIf
    _Refresh()
    EndFunc

    [/autoit]