ListViewItem auslesen

  • Spoiler anzeigen
    [autoit]

    #include <GUIListBox.au3>
    #include <GuiConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)

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

    $Debug_LB = False ; Prüft den Klassennamen (ClassName), der an die ListBox-Funktion übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle zu einem anderen Steuerelement, um die Funktionsweise zu verstehen.

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

    _Main()

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

    Func _Main()
    Local $hListBox

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

    ; Erstellt eine GUI
    GUICreate("ListBox: Ermittelt, ob ein Item markiert ist", 400, 296)
    $hListBox = GUICtrlCreateList("", 2, 2, 396, 296, BitOR($LBS_STANDARD, $LBS_EXTENDEDSEL))
    GUISetState()

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

    ; Fügt Strings hinzu
    _GUICtrlListBox_BeginUpdate($hListBox)
    For $iI = 1 To 9
    _GUICtrlListBox_AddString($hListBox, StringFormat("%03d : Zufallstring", Random(1, 100, 1)))
    Next
    _GUICtrlListBox_EndUpdate($hListBox)

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

    ; Wählt ein paar Items aus
    _GUICtrlListBox_SetSel($hListBox, 3)
    _GUICtrlListBox_SetSel($hListBox, 4)
    _GUICtrlListBox_SetSel($hListBox, 5)

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

    ; Ermittelt den "markier-Status" eines Items
    MsgBox(8156, "Information", "Item 5 ausgewählt: " & _GUICtrlListBox_GetSel($hListBox, 4))
    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    Do
    MsgBox(8156, "Information", "Item 5 ausgewählt: " & _GUICtrlListBox_GetSel($hListBox, 4))
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

    [/autoit]

    Das ist das beispiel aus der Hilfe
    Aber es geht bei mir nicht.
    Egal auf welches ich klicke es komt keine msg :D

  • Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    Global $ListViewSel = -1
    $hGUI = GUICreate("")
    $Listview = GUICtrlCreateListView("Col1|Col2",20,20,360,300,BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
    GUICtrlCreateListViewItem("Row1_1|Row1_2",$Listview)
    GUICtrlCreateListViewItem("Row2_1|Row2_2",$Listview)
    GUICtrlCreateListViewItem("Row3_1|Row3_2",$Listview)
    $Lable = GUICtrlCreateLabel("",20,340,360,40,BitOR(0x01,0x0200))
    $ListViewHwnd = GUICtrlGetHandle($Listview)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    EndSwitch
    If _GUICtrlListView_GetSelectionMark($ListViewHwnd) <> $ListViewSel Then
    $ListViewSel = _GUICtrlListView_GetSelectionMark($ListViewHwnd)
    GUICtrlSetData($Lable,_GUICtrlListView_GetItemText($ListViewHwnd,$ListViewSel))
    EndIf
    WEnd

    [/autoit]

    Mit GUIRegisterMsg geht das wesentlich einfacher, aber ich verlege das Beispiel imm :S

    //EDIT:
    Dein Beispiel ist auch für eine ListBox, keine ListView

    • Offizieller Beitrag

    Ich denke, das ist noch einfacher:

    [autoit]

    Opt('GUIOnEventMode', 1)

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

    $gui = GUICreate('Test')
    GUISetOnEvent(-3, '_ende')
    $ID_LV = GUICtrlCreateListView('Bla|Blub', 10, 10, 300, 200)
    For $i = 0 To 19
    GUICtrlCreateListViewItem(Random(100, 999, 1) & '|' & Random(100, 999, 1), $ID_LV)
    GUICtrlSetOnEvent(-1, '_ItemClick')
    Next
    GUISetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _ende()
    Exit
    EndFunc

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

    Func _ItemClick()
    Local $txt = GUICtrlRead(@GUI_CtrlId)
    MsgBox(0, '', 'ListviewItem geklickt: ' & $txt)
    EndFunc

    [/autoit]
  • [autoit]

    ; https://autoit.de/index.php?page=Thread&threadID=16536

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

    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    Global $ListViewSel = -1
    $hGUI = GUICreate("")
    $Listview = GUICtrlCreateListView("Col1|Col2|Col3|Col4",20,20,360,300,BitOR($ES_AUTOVSCROLL,$ES_READONLY,$WS_VSCROLL))
    GUICtrlCreateListViewItem("Row1_1|Row1_2|Row1_3|Row1_4",$Listview)
    GUICtrlCreateListViewItem("Row2_1|Row2_2|Row2_3|Row2_4",$Listview)
    GUICtrlCreateListViewItem("Row3_1|Row3_2|Row3_3|Row3_4",$Listview)
    GUICtrlCreateListViewItem("Row4_1|Row4_2|Row4_3|Row4_4",$Listview)
    $Lable = GUICtrlCreateLabel("",20,340,360,40,BitOR(0x01,0x0200))
    $ListViewHwnd = GUICtrlGetHandle($Listview)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    EndSwitch
    If _GUICtrlListView_GetSelectionMark($ListViewHwnd) <> $ListViewSel Then
    $ListViewSel = _GUICtrlListView_GetSelectionMark($ListViewHwnd)
    GUICtrlSetData($Lable,_GUICtrlListView_GetItemText($ListViewHwnd,$ListViewSel))
    For $i = 1 to _GUICtrlListView_GetColumnCount($ListViewHwnd)-1
    GUICtrlSetData($Lable,GUICtrlRead($Lable)&@TAB&_GUICtrlListView_GetItemText($ListViewHwnd,$ListViewSel,$i))
    Next
    EndIf

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

    WEnd

    [/autoit]