Überprüfen ob bei einer ListView mit selektiertem Item eine Taste gedrückt wurde

  • Hi,

    gibt es eine Möglichkeit bei einer ListView zu prüfen ob (während ein Item in der ListView selektiert ist) eine Taste gedrückt wurde? Hab durch Google nur herausgefunden das es wohl möglich ist, zu überprüfen ob ein Item angeklickt wurde, allerdings müsste man dafür eine Microsoft Dll einbinden ("WM_Notify") und die macht ja eigentlich nicht das was ich will.
    Dazu hab ich hier im Forum diesen Beitrag gefunden:
    Link zum Beitrag

    Leider hab ich keine Ahnung was ich der Funktion da genau übergeben muss außerdem prüft die das ganze ja auch nur mit Klicks...

    Einmal editiert, zuletzt von CrazyAutoIT (25. Juni 2013 um 17:47)

  • Meinst du Einfachklick und Doppelklick? Dafür gibts $WM_NOTIFY. Da musst du aber keine DLL einbinden.
    Oder Tastatur?

    Warum nutzen eigentlich so wenige die Hilfe, die ist doch eigentlich sehr gut.
    Schau mal in der Hilfe bei _GUICtrlListView_Create und dann im Beispiel.

  • Zitat

    Oder Tastatur?

    Ich möchte gerne dass wenn ich "ENTF" drücke und dabei ein Element in der ListView angewählt ist, das Element entfernt wird.

    Zitat

    Warum nutzen eigentlich so wenige die Hilfe, die ist doch eigentlich sehr gut.

    Ich benutzte fast ständig die Hilfe aber wonach soll ich suchen wenn ich nicht weiß nach was ich suchen soll? In dem Fall hat mir Google nur das mit dem $WM_Notify ausgespuckt.

  • Okay, hab das jetzt mal in Kombination mit einer kleinen Funktion versucht:

    [autoit]


    Func DeleteListViewElement ($ListView)
    Dim $SelectedItemsArray = _GUICtrlListView_GetSelectedIndices($ListView, True)
    If $SelectedItemsArray[0] > 0 Then
    For $counter = 0 To UBound($SelectedItemsArray) - 1
    _GUICtrlListView_DeleteItem($ListView, $SelectedItemsArray[$counter])
    Next
    EndIf
    EndFunc

    [/autoit]

    Wo HotKeySet() aufgerufen wird:

    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    HotKeySet("{DEL}", DeleteListViewElement($ListView1))
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit]

    So funktioniert es schon mal nicht...

  • Ich würde HotKeySet aus der While-Schleife entfernen, das ist sinnlos.

    Besser so:

    [autoit]

    HotKeySet("{DEL}", "DeleteListViewElement")
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit]


    MfG Xenon

  • Schnitzel

    Danke, funktioniert einwandfrei :)

    Dann gleich zur nächsten Frage:

    ich hab in meiner Form eine ProgressBar integriert die ich gerne hochzählen lassen würde. Aber die Funktionen die ich per Google gefunden habe:

    [autoit]


    ProgressOn()
    GUICtrlCreateProgress()

    [/autoit]

    erstellen alle eine neue Progressbar als neue Form, ich würde aber gerne die Progressbar in meiner Form ansprechen, wie mache ich das?

    • Offizieller Beitrag

    Diese Funktion kannst Du extrem kürzen, wenn Du _GUICtrlListView_DeleteItemsSelected verwendest. :rolleyes: