Drop löscht bisherigen Inhalt im Edit

    • Offizieller Beitrag

    Hi,
    wie ihr im Skript seht, kann ich die Einträge aus dem Listview per Drag&Drop ins Edit schreiben. Geht auch tadellos.
    Ich möchte jedoch den bisherigen Inhalt des Edits erhalten (deshalb verwende ich auch die Append-Funktion) - aber sowie gedropt wird, wird der Inhalt des Edits gnadenlos überschrieben.
    Wie kann ich das unterbinden?

    Spoiler anzeigen
    [autoit]

    #include<GuiListView.au3>
    #include<GUIConstantsEx.au3>
    #Include <GuiEdit.au3>
    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Form1", 690, 222, 195, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_DROPPED, '_dropped')
    $ListView1 = GUICtrlCreateListView("Tabelle", 455, 8, 230, 189)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER )
    $LVTable = GUICtrlGetHandle($ListView1)
    $Edit1 = GUICtrlCreateEdit("Bla-Bla ", 8, 8, 441, 189)
    GUICtrlSetState($Edit1, $GUI_DROPACCEPTED)
    $hEdit = GUICtrlGetHandle($Edit1)
    For $i = 1 To 10
    _GUICtrlListView_AddItem($LVTable, 'Eintrag ' & StringRight('0' & $i, 2))
    Next
    GUISetState()

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

    While True
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc
    Func _dropped()
    If @GUI_DropId <> $Edit1 Then Return
    If @GUI_DragId = $ListView1 Then _
    Local $strAppend = _GUICtrlListView_GetItemText($LVTable, _GUICtrlListView_GetSelectedIndices($LVTable))
    _GUICtrlEdit_AppendText($hEdit, $strAppend)
    EndFunc

    [/autoit]
  • Hi,
    habs mal probiert, aber leider nicht geschafft.
    Schon komisch.
    Hab gedacht ich kann den bisherigen Text auslesen und dann diesen und den neuen Text ins Edit schreiben.
    Geht aber leider nicht, dass die @GUI_DragId erst reagiert wenn man das drag&drop abgeschlossen hat :S

    mit _guictrledit_create ... bekomme ich nichtmal drag&drop hin.

    Komisch, komisch.
    Würde ich auf jeden Fall mal im engl. Board posten und schauen was die dazu meinen.

    Würde mich aber brennend interessieren an was das liegt ?(

  • Hi,
    habs doch hinbekommen :D

    Spoiler anzeigen
    [autoit]

    #include <GuiEdit.au3>
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>

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

    Dim $markiert_vorher

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

    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Form1", 690, 222, 195, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_DROPPED, '_dropped')
    $ListView1 = GUICtrlCreateListView("Tabelle", 455, 8, 230, 189)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)
    $LVTable = GUICtrlGetHandle($ListView1)
    $Edit1 = GUICtrlCreateEdit("Bla-Bla ", 8, 8, 441, 189)
    GUICtrlSetState($Edit1, $GUI_DROPACCEPTED)
    $hEdit = GUICtrlGetHandle($Edit1)
    For $i = 1 To 10
    _GUICtrlListView_AddItem($LVTable, 'Eintrag ' & StringRight('0' & $i, 2))
    Next
    GUISetState()

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

    While True
    Sleep(10)
    $markiert = _GUICtrlListView_GetSelectedIndices($ListView1, False)
    If _GUICtrlListView_GetSelectedCount($ListView1) > 0 And $markiert_vorher <> $markiert Then
    $markiert_vorher = $markiert
    $text_bisher = GUICtrlRead($Edit1)
    EndIf
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc ;==>Form1Close

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

    Func _dropped()
    If @GUI_DropId <> $Edit1 Then Return
    If @GUI_DragId = $ListView1 Then
    $strAppend = _GUICtrlListView_GetItemText($LVTable, _GUICtrlListView_GetSelectedIndices($LVTable))
    _GUICtrlEdit_SetText($Edit1, $text_bisher)
    _GUICtrlEdit_AppendText($hEdit, $strAppend)
    EndIf
    EndFunc ;==>_dropped

    [/autoit]
    • Offizieller Beitrag

    Ah, Danke - der Ansatz war gut. Habs jetzt noch etwas vereinfacht:

    Spoiler anzeigen
    [autoit]

    #include<GuiListView.au3>
    #include<GUIConstantsEx.au3>
    #Include <GuiEdit.au3>
    Opt("GUIOnEventMode", 1)
    Global $content

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

    $Form1 = GUICreate("Form1", 690, 222, 195, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_down')
    GUISetOnEvent($GUI_EVENT_DROPPED, '_dropped')
    $ListView1 = GUICtrlCreateListView("Tabelle", 455, 8, 230, 189)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER )
    $LVTable = GUICtrlGetHandle($ListView1)
    $Edit1 = GUICtrlCreateEdit("Bla-Bla ", 8, 8, 441, 189)
    GUICtrlSetState($Edit1, $GUI_DROPACCEPTED)
    $hEdit = GUICtrlGetHandle($Edit1)
    For $i = 1 To 10
    _GUICtrlListView_AddItem($LVTable, 'Eintrag ' & StringRight('0' & $i, 2))
    Next
    GUISetState()

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

    While True
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc
    Func _down()
    $content = GUICtrlRead($Edit1)
    EndFunc
    Func _dropped()
    If @GUI_DropId <> $Edit1 Then Return
    If @GUI_DragId = $ListView1 Then _
    Local $strAppend = _GUICtrlListView_GetItemText($LVTable, _GUICtrlListView_GetSelectedIndices($LVTable))
    _GUICtrlEdit_AppendText($hEdit, $content & $strAppend)
    EndFunc

    [/autoit]