Hallo
Ist es auch möglich Items innerhalb eines ListViews mit der Maus per Drag and Drop nach oben oder unten zu verschieben?
Danke, wenn ihr mir weiterhelfen könnt.
ListView Drag And Drop auch nach oben und unten möglich?
-
- [ offen ]
-
Mechaniker -
5. Februar 2011 um 09:37 -
Geschlossen -
Erledigt
-
-
Hey Mechaniker,
in dem Folgenen Tread gehts um dein anliegen.
Der letzte Post solllte für dich am interessantesten sein. -
Danke, aber ich bin auf der Suche nach einer Möglichkeit um ein Item mit der Maus in der Liste zu verschieben
-
http://www.autoitscript.com/forum/topic/12…rsion-3-feb-11/ sieht da sehr vielversprechend aus, wurde mir von Raupi empfohlen, aber habe es noch nicht getestet.
-
Kleines Update, da ich selbst so eine Funktion benötigte: Das Beispiel in dem von Douky angesprochenen Post funktioniert nicht mehr richtig, ich habe das mal korrigiert. Außerdem kann man das Script nun, da ich noch $GUI_EVENT_PRIMARYUP hinzugefügt habe, während des Verschiebens auf andere Events reagieren. Allerdings benötigt diese Variante drei globale Variablen, zusätzlich zum ListView.
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <WindowsConstants.au3>
#include <GuiListView.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]Global $ListView, $iFrom, $iTo, $fTracking = False
[/autoit] [autoit][/autoit] [autoit]$GUI = GUICreate("Test-GUI", 500, 300, -1, -1, -1, $WS_EX_ACCEPTFILES)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_OnGuiEvent_Close")
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "_OnGuiEvent_PrimaryDown")
GUISetOnEvent($GUI_EVENT_PRIMARYUP, "_OnGuiEvent_PrimaryUp")
$ListView = GUICtrlCreateListView("Eintrag", 10, 10, 480, 280)
_GUICtrlListView_SetColumnWidth($ListView, 0, 475)For $i = 1 To 10
[/autoit] [autoit][/autoit] [autoit]
$Item = GUICtrlCreateListViewItem("Eintrag " & $i, $ListView)
NextGUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEnd; ====================================================================
[/autoit] [autoit][/autoit] [autoit]Func _OnGuiEvent_Close()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>rausFunc _OnGuiEvent_PrimaryDown()
[/autoit] [autoit][/autoit] [autoit]
Local $aCursor = GUIGetCursorInfo($GUI)If $aCursor[4] = $ListView Then
[/autoit] [autoit][/autoit] [autoit]
$fTracking = True
$iFrom = _GUICtrlListView_GetHotItem($ListView)
EndIf
EndFunc ;==>_MoveListViewItemFunc _OnGuiEvent_PrimaryUp()
[/autoit] [autoit][/autoit] [autoit]
Local $aCursor = GUIGetCursorInfo($GUI)
If $aCursor[4] = $ListView And $fTracking Then
$iTo = _GUICtrlListView_GetHotItem($ListView)If $iFrom <> $iTo Then
[/autoit] [autoit][/autoit] [autoit]
_MoveLVItem($iFrom, $iTo - $iFrom, GUICtrlGetHandle($ListView))
_GUICtrlListView_SetSelectionMark($ListView, $iTo)
EndIf
EndIf
$fTracking = False
EndFunc;----------------------------------------------------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]
; Funktion _MoveLVItem($ItemIndex, $StepWidth, $hLV)
;
; Beschreibung verschiebt per Index angegebenen Eintrag eines ListViewCtrl um eine Anzahl Positionen
;
; Parameter $ItemIndex: Index der Zeile
; $StepWidth: Anzahl Zeilen um die der Eintrag verschoben wird (negative Zahl - aufwärts)
; $hLV: ListView ID
;
; Erfordernisse #include <GuiListView.au3>
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;----------------------------------------------------------------------------------------------------------------------
#include <GuiListView.au3>
Func _MoveLVItem($ItemIndex, $StepWidth, $hLV)
If ($ItemIndex + $StepWidth) < 0 Or _
($ItemIndex + $StepWidth) > _GUICtrlListView_GetItemCount($hLV) - 1 Then Return SetError(1)Local $txt2skip = _GUICtrlListView_GetItemText($hLV, $ItemIndex)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]If $StepWidth > 0 Then
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_InsertItem($hLV, $txt2skip, $ItemIndex + $StepWidth + 1)
_GUICtrlListView_DeleteItem($hLV, $ItemIndex)
Else
_GUICtrlListView_InsertItem($hLV, $txt2skip, $ItemIndex + $StepWidth)
_GUICtrlListView_DeleteItem($hLV, $ItemIndex + 1)
EndIfReturn -1
[/autoit]
EndFunc ;==>_MoveLVItem