List Problem (Add , Doubleclick , Context)

  • Hallo Liebes Forum :)

    Ich habe folgendes Problem.
    Ich weiß wie es geht , wenn die Liste nicht so ist

    [autoit]

    Global $Anzeige[1] = [GUICtrlCreateListView

    [/autoit]

    Ich weiß nur wie es so geht

    [autoit]

    $Anzeige = GUICtrlCreateListView

    [/autoit]

    Und zwar will ich ein ItemAdden , Doubleclick funktion , Contextmenu.

    Hier ist mein Script & ich freue mich auf jede Antwort oder hilfe ;) :thumbup:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <INet.au3>
    #include <string.au3>
    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <WinAPI.au3>
    #include <ListViewConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <GuiListView.au3>
    #include <SliderConstants.au3>

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

    $hGui = GUICreate("Problem", 234, 162, -1, -1);,$WS_EX_CONTROLPARENT))
    GUISetBkColor(0x00FFFF)
    Global $Anzeige[1] = [GUICtrlCreateListView("", 8, 14, 140, 95, BitOR($LVS_LIST, $LVS_SHOWSELALWAYS),0)]
    _GUICtrlListView_SetExtendedListViewStyle(-1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT,$LVS_EX_BORDERSELECT))
    GUICtrlSetFont(-1, 10)
    GUICtrlSetColor(-1, 0xFFFFFF)

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

    $contextmenu3 = GUICtrlCreateContextMenu(GUICtrlGetHandle($Anzeige[0]))
    $hideContext = GUICtrlCreateMenuItem("Hide All", $contextmenu3)
    $showContext = GUICtrlCreateMenuItem("Show All", $contextmenu3)
    GUISetState(@SW_SHOW)
    ;~ GUIRegisterMsg(0x004E, "_DoubleClickOnListView");Die Funktion wird bei einem Klick auf die GUI aufgerufen!

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

    _Add()

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

    Func _Add()
    _GUICtrlListView_AddItem($Anzeige[0], "Einstellungen...")
    EndFunc

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd
    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 = GUICtrlGetHandle($Anzeige[0]) 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:
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($Anzeige[0]))
    ;~ $vCharHandle = GUICtrlRead(GUICtrlGetHandle($Anzeige[0]))
    ;~ $vWinState = WinGetState($vCharHandle)
    ;~ If BitAND($vWinState, 2) Then
    ;~ MsgBox(0,"","1")
    ;~ Else
    ;~ MsgBox(0,"","2")
    ;~ EndIf
    EndIf
    EndIf
    $tagNMHDR = 0
    $event = 0
    $lParam = 0
    EndFunc

    [/autoit]
  • Hallo TuttiFrutti,

    du hast doch im Prinzip schon alles, etwas korrigiert:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <INet.au3>
    #include <string.au3>
    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <WinAPI.au3>
    #include <ListViewConstants.au3>
    #include <Array.au3>
    #include <File.au3>
    #include <GuiListView.au3>
    #include <SliderConstants.au3>

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

    $hGui = GUICreate("Problem", 234, 162, -1, -1);,$WS_EX_CONTROLPARENT))
    GUISetBkColor(0x00FFFF)
    Global $Anzeige[1] = [GUICtrlCreateListView("", 8, 14, 140, 95, BitOR($LVS_LIST, $LVS_SHOWSELALWAYS),0)]
    _GUICtrlListView_SetExtendedListViewStyle(-1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT,$LVS_EX_BORDERSELECT))
    GUICtrlSetFont(-1, 10)
    ;GUICtrlSetColor(-1, 0xFFFFFF)

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

    $contextmenu3 = GUICtrlCreateContextMenu($Anzeige[0]) ;<==============
    $hideContext = GUICtrlCreateMenuItem("Hide All", $contextmenu3)
    $showContext = GUICtrlCreateMenuItem("Show All", $contextmenu3)
    _Add()
    GUISetState(@SW_SHOW)
    ;~ GUIRegisterMsg(0x004E, "_DoubleClickOnListView");Die Funktion wird bei einem Klick auf die GUI aufgerufen!
    GUIRegisterMsg($WM_NOTIFY, "_DoubleClickOnListView") ;<====== Bemachrichtigung Doppelklick

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hideContext
    MsgBox(0,"","$hideContext")
    Case $ShowContext
    MsgBox(0,"","$ShowContext")

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

    EndSwitch
    WEnd

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

    Func _Add()
    _GUICtrlListView_AddItem($Anzeige[0], "Einstellungen...")
    EndFunc

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

    Func _DoubleClickOnListView($hWnd, $MsgID, $wParam, $lParam);Die Eigentliche Funktion ;<==ausgetauscht
    Local $tagNMHDR, $event, $hwndFrom, $code
    $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return 0
    $code = DllStructGetData($tagNMHDR, 3)
    If $wParam = $Anzeige[0] Then
    ConsoleWrite($code & @CRLF)
    Switch $code
    ;case -2 ;Klick
    Case -3 ;Doppelklick
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($Anzeige[0]))
    MsgBox(0, "Doppel-Klick","ausgeführt")
    EndSwitch
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]
  • Danke , aber ist das normal , dass im Scite diese Meldungen kommen wenn ich dort rumspiele ?

  • Hallo TuttiFrutti,

    entferne die Zeile 55 (ConsoleWrite), dann bekommst du dies nicht mehr,

    mfg (Auto)Bert

    Danke schön :)

    Gibt es auch eine möglichkeit die Liste Transparent zu machen ?

    Ich habe es mal mit

    [autoit]

    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)

    [/autoit]

    Klappt aber nicht.Hilfe zeigt mir auch nix tolles an.

  • Hilfe zeigt mir auch nix tolles an

    Zitat von Hilfe (Bemerkungen zu GuiCtrlSetBKColor)

    Das spezielle Flag $GUI_BKCOLOR_TRANSPARENT kann verwendet werden um Labels, Group, Radio und Checkbox Controls einen transparenten Hintergrund zu geben.

    also mein. In meinem MP3-Player (siehe Signatur) habe ich es über eine 2. Gui gelöst,

    mfg (Auto)Bert