Doppelklick GUICtrlCreateList

  • Hallo...

    Es gibt ja von euch diese Funktion das wenn ich bei einer GUICtrlCreateListView doppelklick auf einen eintag mache utt er dann dies und das.

    Nun meine frage ist... gibt es sowas auch für GUICtrlCreateList?

    • Offizieller Beitrag

    Mal was grundsätzliches:
    Eine List ist nur ein Control, in einem ListView ist jeder Eintrag ein Control.
    Das ist der Grund, warum ein List eigentlich nur zur Datenanzeige genutzt werden sollte. Die ListView kann man dagegen gut benutzen, um zur Laufzeit Elemente hinzuzufügen, gezielt markierte zu ermitteln oder einzelne Einträge zu markieren, ändern oder zu löschen.
    Daher würde ich einen Umstieg empfehlen, wenn das noch möglich ist. Die Funktion, die du ansprichst, stammt aus dem englischen Forum und GtaSpider kennt sich da besser aus.

    peethebee

    • Offizieller Beitrag

    Hallo!

    Mit List geht das nicht so einfach, aber mit ListView gehts! (Du kannst ja als Style $LVS_LIST nehmen..)

    Hier das Beispiel, die Wichtigen zeilen sind kommentiert!

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    ;Globals für die Funktion:
    Global Const $NM_FIRST = 0
    Global Const $NM_DBLCLK = -3

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

    $MainGui = GUICreate("DBClick test", 516, 295, 192, 120)
    GUISetBkColor(0x0)

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

    $ListView = GUICtrlCreateListView("Produkt Name", 8, 8, 498, 214,$LVS_LIST);Das ListView mit $LVS_LIST...
    $TestItem = GUICtrlCreateListViewItem("TEST1", $ListView);Test 1
    $TestItem = GUICtrlCreateListViewItem("TEST2", $ListView);Test 2
    $settoebay = GUICtrlCreateButton("&Verkaufen", 8, 232, 355, 25, 0)
    $selfbuy = GUICtrlCreateButton("Selbst &Bieten", 8, 264, 115, 25, 0)
    $moreinfos = GUICtrlCreateButton("Weitere &Informationen", 128, 264, 115, 25, 0)
    $exitbut = GUICtrlCreateButton("E&xit", 248, 264, 115, 25, 0)
    $Pic = GUICtrlCreatePic(@WindowsDir & "\winnt.bmp", 368, 232, 138, 52, BitOR($SS_NOTIFY, $WS_GROUP))
    GUISetState(@SW_SHOW)
    GUIRegisterMsg(0x004E, "_DoubleClickOnListView");Die Funktion wird bei einem Klick auf die GUI aufgerufen!

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $exitbut
    Exit
    EndSwitch
    WEnd

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

    Func _DoubleClickOnListView($hWndGUI, $MsgID, $wParam, $lParam);Die Eigentliche Funktion
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return
    $event = DllStructGetData($tagNMHDR, 3); Checkt wie das EVENT aussieht
    If $wParam = $ListView Then;Wenn der Klick auf das ListView ging..
    If $event = $NM_DBLCLK Then;.. Wenn es ein DoppelKlick war
    ; Hier kommt hin was er machen soll:
    MsgBox(0, "",GUICtrlRead(GUICtrlRead($ListView)))
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc ;==>_DoubleClickOnListView

    [/autoit]

    Mfg Spider