DRAG&DROP Save file...ListView

  • ciao!

    Ich habe ein bisschen rumgebastelt und bin an dem Punkt wo ich nicht mehr weiter weiss, oder nicht weiss wie man das am "saubersten" löst.
    Das ist quasi mein erstes Programm mit Elementen, GUI's usw. :D

    Ziel: Ich habe ca. 3000 Songs die ich sortieren möchte, jetzt will ich die rausfiltern (manuell) die mir akkustisch nicht gefallen.
    So habe ich ueberlegt, erstelle doch ein Progrämmchen, damit ich die Files die ich nicht mag, direkt in dieses Programmfenster schieben kann, und er mir eine Liste erstellt in eine TXT.

    Zielgerade: Später möchte ich noch einbauen, dass man das File öffnen kann. Also sprich ; heisst die datei songs.txt die importiert wird, so zeige den Inhalt im Listview an.


    Problem_1: Im Bild_01 sieht man es. Warum wird der Trennbalken, nicht auf die Länge des Pfades angepasst?
    Problem_2: Warum ist dieses Fenster immer im Vordergrund, obwohl ich es nirgends angegeben habe?

    Der eine oder andere wird sich sicher fragen, warum löschst du die nicht direkt?
    - Ganz einfach, es braucht das OK mehrere Personen, dann können sie gelöscht werden.

    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)

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

    Example()

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

    Func Example()
    Local $file, $btn, $msg, $inp, $mylist

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

    GUICreate(" DRAG&DROP Save file...", 620, 460, @DesktopWidth / 2 - 310, @DesktopHeight / 2 - 230, -1, 0x00000018); WS_EX_ACCEPTFILES

    $btn = GUICtrlCreateButton("OK", 10, 400, 60, 20)
    $mylist = GUICtrlCreateListView("File", 9, 10, 600, 300)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUISetState()

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

    $msg = 0
    While $msg <> $GUI_EVENT_CLOSE
    $msg = GUIGetMsg()
    Select
    Case $msg = $btn

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

    $file = FileOpen("test.txt", 1)

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

    ; Check if file opened for writing OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

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

    FileWrite($file, @GUI_DragFile)
    FileWrite($file, "" & @CRLF)

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

    FileClose($file)

    Case $msg = $GUI_EVENT_DROPPED
    GUICtrlCreateListViewItem(@GUI_DragFile, $mylist)

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

    EndSelect
    WEnd

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

    EndFunc ;==>Example

    [/autoit]

    2 Mal editiert, zuletzt von satinez (5. Februar 2009 um 16:11)

  • ciao! Ich habe mich jetzt weiterhin befasst und habe die Hilfe von Autoit benutzt.

    Ich kann mich noch flüchtig daran erinnern, dass man mehrere Argumente hatte, die eine mit z.B.

    [autoit]

    MsgBox(,, "TEST" )

    [/autoit]

    so Argumente ueberspringen konnte. Habe jetzt mehrmals geflucht :D

    Bis ich rausgefunden habe, das man es auch so benutzen kann xD

    [autoit]

    MsgBox(-1,-1, "TEST")

    [/autoit]

    :thumbup:


    jetzt zu meinem Programm, bin soweit zufireden.
    Möchte jetzt allerdings, dass er jedes mal wenn ich auf den "Hinzufügen..." Button drücke, dass in der TXT Datei ein Abschnitt generiert wird mit Datum und Uhrzeit.

    z.b.

    -----------------[ 07.02.2009 - 16:13 Uhr ]-----------------


    Ist das irgendwie möglich ?


    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ListboxConstants.au3>
    #include <ListviewConstants.au3>

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

    #include <StaticConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    Global $file, $btn, $msg, $inp, $mylist

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

    GUICreate(" SATINEZ.NET - ready2del", 620, 205, @DesktopWidth - 630, @DesktopHeight - @DesktopHeight + 5, -1, $WS_EX_ACCEPTFILES)

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

    $btn = GUICtrlCreateButton("Hinzufügen...", 9, 170, 100, 25, $WS_DISABLED)
    $mylist = GUICtrlCreateListView("", 9, 10, 602, 150, $SS_SIMPLE)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    GUISetState()

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

    While $msg <> $GUI_EVENT_CLOSE
    $msg = GUIGetMsg()
    Select
    Case $msg = $btn

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

    $file = FileOpen("test.txt", 1)

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

    FileWrite($file, @GUI_DragFile)
    FileWrite($file, "" & @CRLF)

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

    FileClose($file)

    Case $msg = $GUI_EVENT_DROPPED

    GUICtrlCreateListViewItem(@GUI_DragFile, $mylist)
    GUICtrlSetState( $btn ,$GUI_ENABLE)

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

    EndSelect
    WEnd

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

    Case GUIGetMsg() = $button
    FileWriteLine($file, @mday&"."&@mon&"."&@year&" "&@Hour&":"&@min&":"&@sec)

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • 1A, vielen Dank ^^

    EDIT: Wie kann ich die Objekte, die in das Feld gedropt wurden/werden in ein Array speichern?

    Habe es so probiert, doch leider nix...

    [autoit]

    Case $msg = $GUI_EVENT_DROPPED


    $array = _FileListToArray(@GUI_DragFile)

    [/autoit]

    Einmal editiert, zuletzt von satinez (7. Februar 2009 um 21:48)