1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Oscar

Beiträge von Oscar

  • Drag & Drop innerhalb eines Listviews

    • Oscar
    • 10. Mai 2009 um 17:17

    Ja klar, ich bin ja schon froh, dass ich das jetzt überhaupt hingekriegt habe. Up-/Down-Buttons wollte ich auf keinen Fall dafür haben.
    Mit "schöner" meinte ich jetzt noch einen Einfüge-Balken, aber wie bereits geschrieben: Mir reicht es so. :)
    Gibt gleich eine neue Version vom Starplayer...

  • Drag & Drop innerhalb eines Listviews

    • Oscar
    • 10. Mai 2009 um 16:41

    So, zwei Stunden später...
    Yeah! Ich hab's hingekriegt! :D

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <ListViewConstants.au3>
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    Opt('GUIOnEventMode', 1)
    $hGui = GUICreate('test', 400, 300)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_LVDrop')
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_LVDrag')
    GUISetOnEvent($GUI_EVENT_MOUSEMOVE, '_LVMove')
    $hListview = GUICtrlCreateListView('Playlist|Length', 5, 5, 390, 200, Default, BitOR($WS_EX_CLIENTEDGE, $LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
    GUICtrlSendMsg($hListview, $LVM_SETCOLUMNWIDTH, 0, 290)
    GUICtrlSendMsg($hListview, $LVM_SETCOLUMNWIDTH, 1, 60)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    For $i = 0 To 9
    GUICtrlCreateListViewItem('Titel' & $i & '|' & Random(100, 999, 1), $hListview)
    Next
    Global $iDropItem
    GUISetState()

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

    While True
    Sleep(20)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _LVDrop()
    Local $aItem = _GUICtrlListView_HitTest(GUICtrlGetHandle($hListview))
    If $aItem[0] <> $iDropItem Then
    Local $aItemText = _GUICtrlListView_GetItemTextArray($hListview, $iDropItem)
    _GUICtrlListView_DeleteItem(GUICtrlGetHandle($hListview), $iDropItem)
    Local $InsItem = _GUICtrlListView_InsertItem($hListview, $aItemText[1], $aItem[0])
    _GUICtrlListView_SetItemText($hListview, $InsItem, $aItemText[2], 1)
    _GUICtrlListView_SetItemSelected($hListview, $InsItem)
    _GUICtrlListView_SetItemFocused($hListview, $InsItem)
    EndIf
    EndFunc ;==>_LVDrop

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

    Func _LVDrag()
    Local $aItem = _GUICtrlListView_HitTest(GUICtrlGetHandle($hListview))
    $iDropItem = $aItem[0]
    EndFunc ;==>_LVDrag

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

    Func _LVMove()
    Local $aInfo = GUIGetCursorInfo($hGui)
    If Not IsArray($aInfo) Then Return
    If $aInfo[2] Then
    Local $aItem = _GUICtrlListView_HitTest(GUICtrlGetHandle($hListview))
    _GUICtrlListView_SetItemSelected($hListview, -1, False)
    _GUICtrlListView_SetItemSelected($hListview, $aItem[0])
    EndIf
    EndFunc ;==>_LVMove

    [/autoit]

    Das ist zwar nicht das Schönste, aber mir reicht das. :)

  • Drag & Drop innerhalb eines Listviews

    • Oscar
    • 10. Mai 2009 um 14:29

    Uih! Schönes Beispiel! :thumbup:
    Aber das heißt: Man muss das Ganze "von Hand" machen? Da gibt's kein Drag-Event?

    Na, dann werde ich mal versuchen eine funktionierende Version zu basteln...

    Danke, für das Beispiel! :)

  • Drag & Drop innerhalb eines Listviews

    • Oscar
    • 10. Mai 2009 um 14:04

    Ja, ich suche schon seit gestern Abend nach einer Lösung.
    Aber alle Beispiele, die ich bisher gefunden habe, beziehen sich immer auf ein Drag&Drop von Dateien oder von einem anderen Control-Element in das Listview.
    Ich finde nichts, wie man die Einträge innerhalb des Listviews verschieben kann.

  • Drag & Drop innerhalb eines Listviews

    • Oscar
    • 10. Mai 2009 um 13:41

    Ich habe da ein Problem mit einem Listview und zwar möchte ich einzelne Einträge eines Listviews verschieben.
    Also innerhalb desselben Listviews z.B. Eintrag2 zwischen Eintrag7 und Eintrag8.

    Beispielscript:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    Opt('GUIOnEventMode', 1)
    $hGui = GUICreate('test', 400, 500)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    GUISetOnEvent($GUI_EVENT_DROPPED, '_Drop')
    $hListview1 = GUICtrlCreateListView('Playlist|Length', 5, 5, 390, 200)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    For $i = 0 To 10
    GUICtrlCreateListViewItem('Titel' & $i & '|' & Random(1, 6, 1), $hListview1)
    Next
    $hListview2 = GUICtrlCreateListView('Playlist|Length', 5, 215, 390, 200)
    GUICtrlSetState(-1, $GUI_DROPACCEPTED)
    For $i = 0 To 10
    GUICtrlCreateListViewItem('Titel' & $i & '|' & Random(1, 6, 1), $hListview2)
    Next

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

    GUISetState()

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

    While True
    Sleep(20)
    WEnd

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

    Func _End()
    Exit
    EndFunc ;==>_End

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

    Func _Drop()
    MsgBox(0, 0, @GUI_DropId)
    EndFunc ;==>_Drop

    [/autoit]

    Wenn ich von einem Listview zum anderen einen Eintrag verschiebe, dann öffnet sich die MsgBox, aber beim verschieben innerhalb eines Listviews nicht.
    Wie kann man das Problem lösen? Bin schon am verzweifeln...

  • Obfuscator ünnützlich

    • Oscar
    • 10. Mai 2009 um 13:36

    Diese ganzen Versuche mit dem verschlüsseln sind nutzlos, da man die Daten am Netzwerkanschluss mitsniffen kann. Dort müssen sie so übertragen werden, dass der FTP-Server sie versteht, was das Ganze angreifbar macht.

  • Eigenen kleinen Explorer

    • Oscar
    • 10. Mai 2009 um 13:32

    Das würde auch funktionieren.
    BugFixs Funktion "_GetFilesFolder_Rekursiv" könnte Dir beim einlesen der Struktur von Nutzen sein, da die Funktion das rekursive einlesen unterstützt.

  • Obfuscator ünnützlich

    • Oscar
    • 10. Mai 2009 um 12:50

    Dann verbreite das Script nicht. ;)

    Nee, im Ernst, wenn die Zugangsdaten in dem Programm gespeichert sind, dann sind sie niemals wirklich sicher.

  • Eigenen kleinen Explorer

    • Oscar
    • 10. Mai 2009 um 12:47

    Was soll dabei rauskommen?
    Wenn das keine real existierenden Ordner auf der Festplatte sind, sondern Virtuelle, dann musst Du Dir erstmal darüber Gedanken machen, wie Du die Ordner-Struktur speichern willst.
    Man könnte das über ein Array machen, in dem die einzelnen Elemente die "Pfade" enthalten. Im Listview angezeigt werden dann nur die Ordner/Dateien, die im aktuellen "Pfad" liegen.

  • Eigenen kleinen Explorer

    • Oscar
    • 10. Mai 2009 um 12:22

    Eine Zeile ändern:

    [autoit]


    Case $Delete_Folder
    _GUICtrlListView_DeleteItemsSelected(GUICtrlGetHandle($ListView1))

    [/autoit]
  • GUI - Installer: Button mit Countdown?!

    • Oscar
    • 10. Mai 2009 um 11:28

    Mal ein Beispiel:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    $iCount = 10
    GUICreate('test', 200, 100)
    $hPause = GUICtrlCreateButton('Auto-Install (' & $iCount & ')', 10, 70, 100, 20)
    $hInstall = GUICtrlCreateButton('Installieren', 120, 70, 70, 20)
    GUISetState()
    AdlibEnable('_CountDown', 1000)
    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hPause
    AdlibDisable()
    GUICtrlSetData($hPause, 'Pause')
    GUICtrlSetState($hPause, $GUI_DISABLE)
    Case $hInstall
    _Install()
    EndSwitch
    WEnd

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

    Func _CountDown()
    $iCount -= 1
    GUICtrlSetData($hPause, 'Auto-Install (' & $iCount & ')')
    If $iCount = 0 Then
    AdlibDisable()
    _Install()
    EndIf
    EndFunc

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

    Func _Install()
    MsgBox(0, 0, 'Installiere...')
    EndFunc

    [/autoit]
  • Starplayer (MP3-Player)

    • Oscar
    • 10. Mai 2009 um 11:16

    Entschuldige, ich war so mit dem Umsetzen der anderen Features beschäftigt...

    Ich bin mir aber auch nicht ganz sicher, ob ich wirklich noch mehr Formate unterstützen will. Wenn schon mehr Formate, dann alle, die _SoundPlay() abspielen kann. Aber da weiß ich noch nicht, welche das sind.
    Außerdem habe ich ja jetzt das Drag&Drop ganzer Ordner (inkl. Unterordner) hinzugefügt. Dort benutze ich BugFixs Funktion "_GetFilesFolder_Rekursiv", die ich dann erstmal auf mehrere Datei-Filter umschreiben müsste.
    Also alles in allem relativ viel Aufwand für einen geringen Nutzen. Oder hast Du so viele Lieder im WAV-Format?

  • @error

    • Oscar
    • 10. Mai 2009 um 09:22

    Du kannst den Error-Code doch einfach einer Variablen zuweisen und die Variable dann abfragen, wann Du das brauchst.

  • Starplayer (MP3-Player)

    • Oscar
    • 10. Mai 2009 um 08:39

    Neue Version in Post #1.

    Neue Eigenschaften:
    - Random-Play
    - ID3-Tags im Listview
    - Neue Playlist-Icons
    - Icons nun in einer DLL
    - Bugs beseitigt

  • Starplayer (MP3-Player)

    • Oscar
    • 9. Mai 2009 um 22:52

    Upps, böser Bug! :huh:
    Wusste nicht, dass beim minimieren noch WM_MOVE ausgeführt wird.
    Ist in der nächsten Version behoben. Dauert aber noch etwas, weil ich gerade noch was anderes ändere.

  • Call of Duty Ingame in die Console schreiben

    • Oscar
    • 9. Mai 2009 um 04:21

    Das hört sich doch sehr nach Bot an. Bitte Forenregeln lesen!

  • Taskleiste verschwinden lassen

    • Oscar
    • 8. Mai 2009 um 16:54

    Statt alles andere zu verstecken, könnte man doch auch eine bildschirmfüllende GUI erstellen und die in den Vordergrund packen!?
    Beispiel:

    [autoit]


    #include <WindowsConstants.au3>
    GUICreate('test', @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
    GUICtrlCreatePic(@WindowsDir & '\Seifenblase.bmp', 0, 0, @DesktopWidth, @DesktopHeight)
    GUISetState()
    Do
    Until GUIGetMsg() = -3

    [/autoit]
  • Spiele-Problem

    • Oscar
    • 8. Mai 2009 um 16:39

    Das Problem liegt vermutlich darin, dass Du den MessageLoop-Modus verwendest.
    In einer MessageLoop-Schleife soll ja die Prozessorauslastung möglichst nicht auf 100% ansteigen, während eigentlich nur auf ein Event gewartet wird und demzufolge passt GUIGetMsg den "internen Sleep" dynamisch an.
    Man kann das an diesem Beispiel ganz gut erkennen:

    Spoiler anzeigen
    [autoit]


    GUICreate('test', 200, 100)
    $hLabel = GUICtrlCreateLabel('0', 20, 30, 100, 20)
    GUISetState()
    $iCount = 0
    Do
    $iCount += 1
    GUICtrlSetData($hLabel, $iCount)
    Until GUIGetMsg() = -3

    [/autoit]


    Sobald die Maus bewegt wird, zählt die Schleife viel schneller. Hält man die Maus an, wird es wieder langsamer.
    Wenn dieses Verhalten in einem Programm störend ist, dann muss man das Script auf den OnEvent-Modus umschreiben. Dort kann man den Sleep-Wert in der Endlosschleife selbst festlegen.

  • Fehlerabwicklung

    • Oscar
    • 8. Mai 2009 um 16:15

    Ich denke, Du hast da was falsch verstanden. :D
    Wenn AutoIt mit einer Fehlermeldung abbricht, dann solltest Du den Fehler suchen und ihn beseitigen und nicht nach einer Möglichkeit suchen das Script trotz Fehler weiterlaufen zu lassen (was in den meisten Fällen so oder so zu Folgefehlern führen würde).

  • Buttons aus Variablen

    • Oscar
    • 8. Mai 2009 um 16:09

    @L0c4lh0sT: Was sollen denn das für Control-Elemente sein, wo das eingetragen werden soll?
    Statt das in ASCII-Art aufzumalen, könntest Du mal Koda benutzen und eine GUI entwerfen, dann müssen wir nicht raten. ;)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™