Listview SpaltenauswahlButton

    • Offizieller Beitrag

    Du kannst dir einen zusätzlichen Button mit Hilfe eines Child-Windows auf den Header aufsetzen:

    [autoit]

    #include <GuiListview.au3>
    #include <GuiHeader.au3>
    #include <WindowsConstants.au3>

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

    $hGui = GUICreate('1', 600, 400)
    $LV = GuiCtrlCreateListView('A|B|C', 10, 10, 500, 200)
    For $i = 1 To 40
    GUICtrlCreateListViewItem('A ' & $i & '|B ' & $i & '|C ' & $i, $LV)
    Next
    $hLVHeader = _GUICtrlListView_GetHeader($LV)
    $aHeaderPos = _GUICtrlHeader_GetItemRect($hLVHeader, 0)
    $iHeaderHeight = $aHeaderPos[3] - $aHeaderPos[1]
    $hChild = GUICreate('', $iHeaderHeight, $iHeaderHeight, 500-10-$iHeaderHeight, 10, $WS_POPUP, $WS_EX_MDICHILD, $hGui)
    $bt = GUICtrlCreateButton('..', 0, 0, $iHeaderHeight, $iHeaderHeight)

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

    GUISetState(@SW_SHOW, $hGui)
    GUISetState(@SW_SHOW, $hChild)

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

    Do
    Until GUIGetMsg() = -3

    [/autoit]
  • Danke leider löst es das Problem für mich nicht zufriedenstellend.
    Gibt es sonst vielleicht eine Möglichkeit ein extra Contextmenü nur für den Header zu setzen ?

    • Offizieller Beitrag

    Gibt es sonst vielleicht eine Möglichkeit ein extra Contextmenü nur für den Header zu setzen ?


    Speziell für diesen Einsatz habe ich die OwnContext UDF erstellt. ;)
    Geht z.B. so:

    Spoiler anzeigen
    [autoit]

    #include <GuiListview.au3>
    #include "OwnContext.au3"

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

    $hGui = GUICreate('Test', 600, 400)
    $xLV = 10
    $yLV = 10
    $wLV = 500
    $LV = GuiCtrlCreateListView('A|B|C', $xLV, $yLV, $wLV, 200)
    $hListView = GUICtrlGetHandle($LV)
    For $i = 1 To 40
    GUICtrlCreateListViewItem('A ' & $i & '|B ' & $i & '|C ' & $i, $LV)
    Next
    $hLVHeader = _GUICtrlListView_GetHeader($LV)

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

    _GUICtrlOwnContext_Startup($hGui)
    $hMnu = _GUICtrlOwnContext_Create($hLVHeader)
    $menu1 = _GUICtrlOwnContext_AddItem($hMnu, 'Menüpunkt 1')
    $menu2 = _GUICtrlOwnContext_AddItem($hMnu, 'Menüpunkt 2')
    _GUICtrlOwnContext_AddItem($hMnu)
    $menu3 = _GUICtrlOwnContext_AddItem($hMnu, 'Menüpunkt 3')

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

    GUISetState(@SW_SHOW, $hGui)

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

    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $menu1
    MsgBox(0, 'Kontextmenü', 'Funktion für Menüpunkt 1')
    Case $menu2
    MsgBox(0, 'Kontextmenü', 'Funktion für Menüpunkt 2')
    Case $menu3
    MsgBox(0, 'Kontextmenü', 'Funktion für Menüpunkt 3')
    EndSwitch
    WEnd

    [/autoit]