GUICtrlCrateListView

  • Wie liest man ListViews aus, also weder eine Reihe, noch eine Spalte, sondern beides Zusammen=ein bestimmtes Feld.
    Ich habe schon

    [autoit]

    GUICtrlRead(GUICtrlRead($listview))

    [/autoit]

    probiert, aber damit kann man nur eine ganze Reihe auswählen und mit StringRegExp kriege ich das nicht korrekt hin.
    Kann mir jemand helfen?

    Rechtschreibfehler sind Spezialeffekte meiner Tastatur.

  • Das habe ich auch schon begriffen, aber nicht wie man herausbekommt welche Spalte man ausgewählt hat.
    Bei dem hier kommt irgentwie immer Mist raus (mit _GUICtrlListView_GetSelectedIndices)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiListView.au3>

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

    Opt('MustDeclareVars', 1)

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

    Example()

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

    Func Example()
    Local $listview, $button, $item1, $item2, $item3, $input1, $msg

    GUICreate("listview items", 220, 250, 100, 200)

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

    $listview = GUICtrlCreateListView("Spalte1|Spalte2|Spalte3 ", 10, 10, 200, 150);,$LVS_SORTDESCENDING)
    $button = GUICtrlCreateButton("Value?", 75, 170, 70, 20)
    GUICtrlCreateListViewItem("item2|col22|col23", $listview)
    GUICtrlCreateListViewItem("item1|col12|col13", $listview)
    GUICtrlCreateListViewItem("item3|col32|col33", $listview)
    GUISetState()

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

    Do
    $msg = GUIGetMsg()
    Select
    Case $msg = $button
    MsgBox(0, "listview item", _GUICtrlListView_GetItemText($listview, 1,_GUICtrlListView_GetSelectedIndices($listview)))
    EndSelect
    Until $msg = $GUI_EVENT_CLOSE
    EndFunc ;==>Example

    [/autoit]


    Vielleicht ist der Befehl auch schwachsinn.

    Rechtschreibfehler sind Spezialeffekte meiner Tastatur.

    • Offizieller Beitrag

    Beispiel:

    Spoiler anzeigen
    [autoit]

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

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

    Opt('MustDeclareVars', 1)

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

    Example()

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

    Func Example()
    Local $listview, $button, $item1, $item2, $item3, $input1, $msg, $Sel, $hListView

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

    GUICreate("listview items", 220, 250, 100, 200)

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

    $listview = GUICtrlCreateListView("Spalte1|Spalte2|Spalte3 ", 10, 10, 200, 150, $LVS_SINGLESEL);,$LVS_SORTDESCENDING)
    $hListView = GUICtrlGetHandle($listview)
    $button = GUICtrlCreateButton("Value?", 75, 170, 70, 20)
    GUICtrlCreateListViewItem("item2|col22|col23", $listview)
    GUICtrlCreateListViewItem("item1|col12|col13", $listview)
    GUICtrlCreateListViewItem("item3|col32|col33", $listview)
    GUISetState()

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

    Do
    $msg = GUIGetMsg()
    Select
    Case $msg = $button
    $Sel = _GUICtrlListView_GetSelectedIndices($hListView)
    MsgBox(0, "ListViewItem", "Col1: " & _GUICtrlListView_GetItemText($hListView, $Sel, 0) & @CRLF _
    & "Col2: " & _GUICtrlListView_GetItemText($hListView, $Sel, 1) & @CRLF _
    & "Col3: " & _GUICtrlListView_GetItemText($hListView, $Sel, 2) & @CRLF)
    EndSelect

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

    Until $msg = $GUI_EVENT_CLOSE
    EndFunc ;==>Example

    [/autoit]

    Edit: Hier nochmal ein Beispiel mit WM_NOTIFY:

    Spoiler anzeigen
    [autoit]

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

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

    Opt('MustDeclareVars', 1)

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

    Global $listview, $button, $item1, $item2, $item3, $input1, $msg, $Sel, $hListView
    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
    GUICreate("listview items", 220, 250, 100, 200)

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

    $listview = GUICtrlCreateListView("Spalte1|Spalte2|Spalte3 ", 10, 10, 200, 150);,$LVS_SORTDESCENDING)
    $hListView = GUICtrlGetHandle($listview)
    GUICtrlCreateListViewItem("item1|col12|col13", $listview)
    GUICtrlCreateListViewItem("item2|col22|col23", $listview)
    GUICtrlCreateListViewItem("item3|col32|col33", $listview)
    GUISetState()

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
    ;~ Local $tBuffer
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $NM_DBLCLK, $NM_CLICK
    $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
    MsgBox(0, "ListViewItem", "Eintrag: " & DllStructGetData($tInfo, "Index") + 1 & @CRLF _
    & "Spalte: " & DllStructGetData($tInfo, "SubItem") + 1 & @CRLF _
    & "Spaltentext: " & _GUICtrlListView_GetItemText($hListView, DllStructGetData($tInfo, "Index"), DllStructGetData($tInfo, "SubItem")) & @CRLF)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]

    Den Button habe ich entfernt. Linksklick auf das ListView wählt aus.

  • Danke, funktioniert aber auch ohne die ganzen Includes (bis auf das erste), allerdings leider nicht in meinem Hauptprogramm. Naja, werd ich wohl noch finden.

    Rechtschreibfehler sind Spezialeffekte meiner Tastatur.

    • Offizieller Beitrag

    Da wir dein Hauptprogramm nicht kennen, können wir auch nicht viel helfen. ;)

    Edit: In meinem 1. Beispiel ist ein Include überflüssig. Beim 2. ist alles korrekt.