ListView editieren und sortieren

  • Hiho,

    also eigentlich habe ich es schon in mehreren scripten drin, sowohl die varianten als auch andere, dich ich hier aus dem forum angewandt haben, sortieren mein listview nicht mehr. vllt kann mir helfen, was am script banane ist, dass es nicht geht.

    zusätzlich habe ich noch die frage, was ich machen muss, damit ich die einzelnen zellen im listview direkt im listview ändern kann. wenn ich 3 mal in ne zelle klicke, kann ich zwar was eingeben, das wird aber nicht übernommen.

    hier das script:

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=C:\Documents and Settings\plutod\My Documents\to_do_450.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <WinAPI.au3>
    #include <Constants.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>

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

    TraySetClick(8)
    TraySetOnEvent($TRAY_EVENT_PRIMARYDOWN, "_ToogleMain")
    Opt("TrayMenuMode",1) ;0=append, 1=no default menu, 2=no automatic check, 4=menuitemID not return
    Opt("TrayOnEventMode",1) ;0=disable, 1=enable

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

    Opt("GUICloseOnESC", 0) ;1=ESC closes, 0=ESC won't close
    ;~ Opt("OnExitFunc","_Exit2")

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

    $TTop = TrayCreateItem("Top")
    TrayItemSetOnEvent(-1, "_Top")
    TrayCreateItem("")
    TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1, "_Exit")

    $x = IniRead("Settings.ini", "Window", "x", "-1")
    $y = IniRead("Settings.ini", "Window", "y", "-1")
    $w = IniRead("Settings.ini", "Window", "weight", "450")
    $h = IniRead("Settings.ini", "Window", "height", "250")
    $trans = IniRead("Settings.ini", "Window", "Trans", "")
    If $trans = 0 Then
    IniWrite("Settings.ini", "Window", "Trans", "200")
    $trans = 200
    EndIf
    $Top = IniRead("Settings.ini", "Window", "Top", "0")

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

    $gui = GUICreate("", $w, $h, $x, $y, BitOR($WS_POPUP, $WS_POPUPWINDOW, $WS_SIZEBOX, $WS_THICKFRAME), $WS_EX_TOOLWINDOW)
    $list = GUICtrlCreateListView("", 0, 0, $w, $h - 51, BitOR($LVS_EDITLABELS, $LVS_SHOWSELALWAYS, $LVS_SINGLESEL), BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_GRIDLINES))
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKTOP + $GUI_DOCKHCENTER)
    $Columns = IniReadSection("Settings.ini", "Columns")
    If Not @error Then
    For $i = 1 To $Columns[0][0]
    _GUICtrlListView_AddColumn($list, $Columns[$i][0], $Columns[$i][1])
    Next
    Else
    For $i = 1 To 4
    _GUICtrlListView_AddColumn($list, "Spalte " & $i, 100)
    IniWrite("Settings.ini", "Columns", "Spalte " & $i, "100")
    Next
    EndIf
    $edit = GUICtrlCreateEdit("", 0, 200, $w, $h - 200, BitOR($ES_WANTRETURN, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
    GUICtrlSetResizing(-1, $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM + $GUI_DOCKHCENTER)

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

    WinSetTrans($gui, "", $trans)
    If $Top = 1 Then
    WinSetOnTop($gui, "", 1)
    TrayItemSetState($TTop, 1)
    EndIf

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

    _GUICtrlEdit_SetText(GUICtrlGetHandle($edit), StringReplace(IniRead("Settings.ini", "Msg", "Msg", ""), "[CRLF]" ,@CRLF))

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

    Dim $array[2][2]
    $array[0][0] = "A"
    $array[0][1] = "bla"
    $array[1][0] = "Z"
    $array[1][1] = "test"
    _GUICtrlListView_AddArray($list, $array)

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

    _Win_SetClickThrough($gui, "", 1)

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

    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _ToogleMain()
    $WinIsResist = _WindowIsResist($gui)
    If $WinIsResist = 0 Then
    GUISetState(@SW_RESTORE)
    _Win_SetClickThrough($gui, "", False)
    Else
    _Win_SetClickThrough($gui, "", True)
    EndIf
    EndFunc

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

    Func _Top()
    $WinIsOnTop = _WinIsOnTop($gui)
    If $WinIsOnTop = 1 Then
    WinSetOnTop($gui, "", 0)
    IniWrite("Settings.ini", "Window", "Top", "0")
    TrayItemSetState($TTop, 4)
    Else
    WinSetOnTop($gui, "", 1)
    IniWrite("Settings.ini", "Window", "Top", "1")
    TrayItemSetState($TTop, 1)
    EndIf
    EndFunc

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

    Func _Exit()
    $WinGetPos = WinGetPos($gui)
    If Not @error Then
    IniWrite("Settings.ini", "Window", "x", $WinGetPos[0])
    IniWrite("Settings.ini", "Window", "y", $WinGetPos[1])
    IniWrite("Settings.ini", "Window", "weight", $WinGetPos[2] - 8)
    IniWrite("Settings.ini", "Window", "height", $WinGetPos[3] - 8)
    EndIf
    IniWrite("Settings.ini", "Msg", "Msg", StringReplace(_GUICtrlEdit_GetText(GUICtrlGetHandle($edit)), @CRLF, "[CRLF]"))
    Exit
    EndFunc

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

    Func _WinIsOnTop($WindowHandle)
    Local $long = _WinAPI_GetWindowLong(WinGetHandle($WindowHandle),$GWL_EXSTYLE)
    Return BitAND($long,8)=8 ; $WS_EX_TOPMOST = 8
    EndFunc ; Author(s): Prog@ndy

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

    Func _WindowIsResist($handle)
    $Style = _WinAPI_GetWindowLong($handle,$GWL_EXSTYLE)
    If BitAND($Style,$WS_EX_TRANSPARENT) = $WS_EX_TRANSPARENT And BitAND($Style,$WS_EX_LAYERED) = $WS_EX_LAYERED Then
    Return 0
    Else
    Return 1
    EndIf
    EndFunc ; Author: Prog@ndy

    Func _Win_SetClickThrough($title,$text = "",$noclic = True)
    Local $hWnd = WinGetHandle($title,$text)
    If @error Then Return SetError(1,0,0)
    If $noclic Then
    _WinAPI_SetWindowLong($hWnd,$GWL_EXSTYLE,BitOR(_WinAPI_GetWindowLong($hWnd,$GWL_EXSTYLE),$WS_EX_TRANSPARENT))
    If @error Then Return SetError(2,0,0)
    Else
    _WinAPI_SetWindowLong($hWnd,$GWL_EXSTYLE,BitAND(_WinAPI_GetWindowLong($hWnd,$GWL_EXSTYLE),BitNOT($WS_EX_TRANSPARENT)))
    If @error Then Return SetError(2,0,0)
    EndIf
    Return 1
    EndFunc ; Author(s): Prog@ndy

    [/autoit]
  • [autoit]


    #Include <GuiListView.au3>
    _GUICtrlListView_SimpleSort($hWnd, ByRef $vDescending, $iCol)

    [/autoit]

    hast du es mit dieser funktion schon probiert?

    du willst die sortierung dann sicher haben wenn du den entsprechenden kopf der spalte gedrückt hast oder? da müsste ich noch schauen, welchen event du hierbei abfragen musst...

  • hmm, jetzt läufts, gestern hab ich 3 -4 sachen probiert und es wollte nicht .. kein plan, aber thx 4 help

    [autoit]


    ...
    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($list)]
    ...
    Case $LVN_COLUMNCLICK ; A column was clicked
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _GUICtrlListView_SimpleSort($list, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))

    [/autoit]