ListView, Items nicht verschieben

  • welchen style muss ich verwenden, damit bei der Listview die einzelnen Items nichtmehr verschiebbar sind?

    sprich dass ich die spalten nicht mehr größer/kleiner machen kann..

    • Offizieller Beitrag

    Die Spaltenbreite fixieren, ob das per Style geht, weiß ich grad nicht. Aber so geht es auf jeden Fall:

    Spoiler anzeigen
    [autoit]

    #include <ListViewConstants.au3>
    #include <StructureConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<WindowsConstants.au3>
    #include <GUIListView.au3>

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

    $gui = GUICreate('test')
    $hListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200)
    _GUICtrlListView_SetColumnWidth($hListView, 0, 146)
    _GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE_USEHEADER)
    For $i = 1 To 10
    GUICtrlCreateListViewItem('Zeile ' & $i & ' Spalte 1|Zeile ' & $i & ' Spalte 2', $hListView)
    Next

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

    ; hier für Vergleich die Spaltenbreite speichern:
    Global $aColumnWidth[_GUICtrlListView_GetColumnCount($hListView)]
    For $i = 0 To UBound($aColumnWidth) -1
    $aColumnWidth[$i] = _GUICtrlListView_GetColumnWidth($hListView, $i)
    Next

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

    GUISetState()

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    Do
    $msg = GUIGetMsg()
    Until $msg = $GUI_EVENT_CLOSE

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

    Func _Columnwidth()
    For $i = 0 To UBound($aColumnWidth) -1
    If _GUICtrlListView_GetColumnWidth($hListView, $i) <> $aColumnWidth[$i] Then
    _GUICtrlListView_SetColumnWidth($hListView, $i, $aColumnWidth[$i])
    EndIf
    Next
    EndFunc

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case -12 ; Spaltenbreite wurde verändert
    _Columnwidth()
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]