ListView onclick

  • Hi,

    ich habe hier mal ein Testscript gemacht welches mir den Index der selectierten Zeile ausgeben soll:

    Spoiler anzeigen
    [autoit]

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

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

    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $ListView1 = GUICtrlCreateListView("ID|Name|Port|Status|Online|Max Clients|Uptime", 24, 16, 561, 281, BitOR($LVS_NOSORTHEADER, $LVS_SINGLESEL))
    GUICtrlCreateListViewItem("1|test|1234", $ListView1)
    GUICtrlCreateListViewItem("2|noch einer|6434", $ListView1)
    GUICtrlCreateListViewItem("44|der letzte|1010", $ListView1)
    GUISetState(@SW_SHOW)

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

    Dim $selected = ""
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch

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

    If _GUICtrlListView_GetSelectionMark($ListView1) = 0 Or _GUICtrlListView_GetSelectionMark($ListView1) > 0 Then
    If Not $selected = _GUICtrlListView_GetSelectionMark($ListView1) Then
    $selected = _GUICtrlListView_GetSelectionMark($ListView1)
    MsgBox(0, "", $selected)
    EndIf
    EndIf
    WEnd

    [/autoit]


    Problem ist nun, dass das nicht so ganz funktioniert. Klickt man auf die erste Zeile passiert nichts, klickt man dann auf die zweie kommt die Msg mit dem Index, klickt man dann wieder auf die erste kommt hier auch richtig die ID.
    Oder anderes Beispiel, klickt man zuerst auf die dritte Zeile dann kommt die Msg, wenn man aber im Anschluss auf die zweite Zeile klickt kommt sie nicht.

    Hab da nun schon zwei Stunden rumüberlegt aber ich hänge einfach. Hat jemand eine Idee was ich falsch macheß

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    Einmal editiert, zuletzt von chip (31. März 2011 um 18:32)

  • Habs mal überarbeitet:

    Spoiler anzeigen
    [autoit]

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

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

    Global $iLastIndex = -1

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

    $Form1 = GUICreate("Form1", 625, 443, 192, 124)
    $ListView1 = GUICtrlCreateListView("ID|Name|Port|Status|Online|Max Clients|Uptime", 24, 16, 561, 281, BitOR($LVS_NOSORTHEADER, $LVS_SINGLESEL))
    GUICtrlCreateListViewItem("1|test|1234", $ListView1)
    GUICtrlCreateListViewItem("2|noch einer|6434", $ListView1)
    GUICtrlCreateListViewItem("44|der letzte|1010", $ListView1)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    If _GUICtrlListView_GetSelectionMark($ListView1) <> -1 Then
    If $iLastIndex <> _GUICtrlListView_GetSelectionMark($ListView1) Then
    $iLastIndex = _GUICtrlListView_GetSelectionMark($ListView1)
    MsgBox(0, "", $iLastIndex)
    EndIf
    EndIf
    WEnd

    [/autoit]