ListView Acceptfiles

  • Hallo!

    Ich möchte Dateien per DragnDrop in eine Listview einfügen. Allerdings sollte bei erneutem Einfügen nicht das vorige Item gelöscht werden, sondern hinzugefügt (hab ich mit nem Input schon Probleme gehabt). Außerdem sollten auch mehrere Dateien auf einmal möglich sein. Wie mache ich sowas?

    MFG Taek

    Einmal editiert, zuletzt von Taek (17. Oktober 2008 um 08:21)

  • Hi,
    sowas hab ich vor einem Monat auch gebraucht und bin dabei im englischen Forum fündig geworden.

    So funktioniert es

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

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

    ;mehrere Dateien auf die GUI ziehen und so einlesen
    GUIRegisterMsg(0x233, "On_WM_DROPFILES")

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

    $gui2 = GUICreate("Test", 320, 220, -1, -1, -1, $WS_EX_ACCEPTFILES)
    $listview = GUICtrlCreateListView("Dateiname", 10, 10, 300, 200)

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

    GUISetState()
    WinSetOnTop("Test", "", 1)

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

    ;****************************
    ; While-Schleife *
    ;****************************

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    EndSelect
    WEnd

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

    ;************************************************************
    ; Eine reg-Datei auf das Listview ziehen (2. GUI) *
    ;************************************************************

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

    Func On_WM_DROPFILES($hWnd, $msg, $wParam, $lParam)
    Local $tDrop, $aRet, $iCount
    ;string buffer for file path
    $tDrop = DllStructCreate("char[260]")
    ;get file count
    $aRet = DllCall("shell32.dll", "int", "DragQueryFile", _
    "hwnd", $wParam, _
    "uint", -1, _
    "ptr", DllStructGetPtr($tDrop), _
    "int", DllStructGetSize($tDrop) _
    )
    $iCount = $aRet[0]
    ;get file paths
    For $i = 0 To $iCount - 1
    $aRet = DllCall("shell32.dll", "int", "DragQueryFile", _
    "hwnd", $wParam, _
    "uint", $i, _
    "ptr", DllStructGetPtr($tDrop), _
    "int", DllStructGetSize($tDrop) _
    )
    $pfad_uebergabe = DllStructGetData($tDrop, 1)
    _GUICtrlListView_BeginUpdate($listview)
    GUICtrlCreateListViewItem($pfad_uebergabe, $listview) ;Dateiname dem ListView hinzufügen
    _GUICtrlListView_EndUpdate($listview)
    Next
    ;finalize
    DllCall("shell32.dll", "int", "DragFinish", "hwnd", $wParam)
    Return
    EndFunc ;==>On_WM_DROPFILES

    [/autoit]