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. CRouchs

Beiträge von CRouchs

  • Drag & Drop von Datei in TreeView

    • CRouchs
    • 4. Juni 2015 um 11:16

    Vielen Dank!
    Um die ursprüngliche Frage nochmal aufzugreifen...
    Ich habe jetzt den Umweg über die Funktion genommen. Wenn ich eine Datei ins TreeView "droppe" soll diese Funktion ausgeführt werden, die den Namen des Treeviewitems ausgibt.
    Aktuell mache ich das über

    AutoIt
    GUISetOnEvent($GUI_EVENT_DROPPED, "_DropFileToTreeView")


    Ich habe gestern bereits eine ganze Weile versucht das ganze via WM_NOTIFY zu realisieren

    AutoIt
    Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    	#forceref $hWnd, $iMsg, $wParam
    	Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView_part, $hWndTreeView
    
    
    	$hWndTreeView = $TreeView
    
    
    	If Not IsHWnd($TreeView) Then $hWndTreeView = GUICtrlGetHandle($TreeView)
    
    
    	$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    	$hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    	$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    	$iCode = DllStructGetData($tNMHDR, "Code")
    	Switch $hWndFrom
    		Case $hWndTreeView
    			Switch $iCode				
    				Case $TVN_DROP ;if user drops file into treeview
    Alles anzeigen


    So etwas wie $TVN_DROP gibt es allerdings nicht, ich habe nur $TVN_BEGINDRAG als DragDrop-Event gefunden. Gibt es ein Event mit dem ich das "Loslassen" der Datei erfassen kann?

  • Drag & Drop von Datei in TreeView

    • CRouchs
    • 4. Juni 2015 um 10:06

    Ah ok. Danke schonmal.
    Gibt es eine Möglichkeit die Koordinaten / Position des TreeView programmatisch zu ermitteln, sodass ich die Koordinaten nicht von Hand eintragen muss?

  • Drag & Drop von Datei in TreeView

    • CRouchs
    • 4. Juni 2015 um 08:35

    Also prinzipiell erstmal folgendes Beispiel. Der TreeView ist nicht im Ursprungspunkt der Gui und ich möchte nun gerne via Mousecursor den Itemtext der Parent- bzw. Childelemente des TreeViews angezeigt bekommen. Die entsprechende Funktion kann im Beispiel über Enter aufgerufen werden, sodass man mit der Maus über die jeweiligen TreeView Items gehen kann.
    Problem A: Mit den Cursorkoordinaten stimmt was nicht, denn ich bekomme in meinem Beispiel keine Handles für die letzten Elemente im TreeView
    Problem B: Ich bekomme keinen Itemtext

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <GuiImageList.au3>
    #include <GuiTreeView.au3>
    #include <MsgBoxConstants.au3>
    #include <WindowsConstants.au3>
    #include <ButtonConstants.au3>
    
    
    
    
    
    
    Global $g_hImage, $g_hStateImage
    
    
    Example()
    
    
    Func Example()
    	Local $ahItem[10], $aidChildItem[30], $iYItem = 0, $iYRand, $iXRand, $idTreeView
    	Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS)
    
    
    	Local $Gui = GUICreate("TreeView Hit Test Item", 400, 300)
    
    
    	$idTreeView = GUICtrlCreateTreeView(80, 40, 200, 200, $iStyle, $WS_EX_CLIENTEDGE)
    	GUISetState(@SW_SHOW)
    
    
    	_CreateNormalImageList()
    	_GUICtrlTreeView_SetNormalImageList($idTreeView, $g_hImage)
    
    
    	_CreateStateImageList()
    	_GUICtrlTreeView_SetStateImageList($idTreeView, $g_hStateImage)
    
    
    	_GUICtrlTreeView_BeginUpdate($idTreeView)
    	For $x = 0 To 9
    		$ahItem[$x] = _GUICtrlTreeView_Add($idTreeView, 0, StringFormat("[%02d] New Item", $x), 4, 5)
    		_GUICtrlTreeView_SetStateImageIndex($idTreeView, $ahItem[$x], 1)
    
    
    		For $y = 1 To 3
    			$aidChildItem[$iYItem] = _GUICtrlTreeView_AddChild($idTreeView, $ahItem[$x], StringFormat("[%02d] New Child", $y), 0, 3)
    			_GUICtrlTreeView_SetStateImageIndex($idTreeView, $aidChildItem[$iYItem], 1)
    			$iYItem += 1
    		Next
    	Next
    	_GUICtrlTreeView_EndUpdate($idTreeView)
    
    
    	_GUICtrlTreeView_SelectItem($idTreeView, $ahItem[0])
    	_GUICtrlTreeView_SetStateImageIndex($idTreeView, $ahItem[0], 2)
    
    
    
    
    	Local $idButton = GUICtrlCreateButton("show", 140, 272, 85, 25, $BS_DEFPUSHBUTTON)
    
    
    	; Loop until the user exits.
    	Local $action
    
    
    	While(1)
    
    
    		$action = GUIGetMsg()
    
    
    			If $action = $idButton Then
    
    
    
    
    			$iYRand = _WinAPI_GetMousePosY(true, $Gui)
    			$iXRand = _WinAPI_GetMousePosX(true, $Gui)
    
    
    			Local $handle = _GUICtrlTreeView_HitTestItem($idTreeView, $iXRand, $iYRand)
    			Local $text = _GUICtrlTreeView_GetText($handle)
    			MsgBox($MB_SYSTEMMODAL, "Information", StringFormat("Hit Test Item (%d, %d): Handle: %s / Text: %s", $iXRand, $iYRand, $handle, $text))
    		EndIf
    
    
    
    
    
    
    
    
    		If $action = $GUI_EVENT_CLOSE Then
    			Exit
    		EndIf
    	WEnd
    
    
    EndFunc   ;==>Example
    
    
    Func _GetHitString($iResult)
    	If $iResult = 0 Then
    		Return "No Item in Hit area"
    	Else
    		Return "Item Handle: " & $iResult
    	EndIf
    EndFunc   ;==>_GetHitString
    
    
    Func _CreateNormalImageList()
    	$g_hImage = _GUIImageList_Create(16, 16, 5, 3)
    	_GUIImageList_AddIcon($g_hImage, "shell32.dll", 110)
    	_GUIImageList_AddIcon($g_hImage, "shell32.dll", 131)
    	_GUIImageList_AddIcon($g_hImage, "shell32.dll", 165)
    	_GUIImageList_AddIcon($g_hImage, "shell32.dll", 168)
    	_GUIImageList_AddIcon($g_hImage, "shell32.dll", 137)
    	_GUIImageList_AddIcon($g_hImage, "shell32.dll", 146)
    EndFunc   ;==>_CreateNormalImageList
    
    
    Func _CreateStateImageList()
    	$g_hStateImage = _GUIImageList_Create(16, 16, 5, 3)
    	_GUIImageList_AddIcon($g_hStateImage, "shell32.dll", 3)
    	_GUIImageList_AddIcon($g_hStateImage, "shell32.dll", 4)
    EndFunc   ;==>_CreateStateImageList
    Alles anzeigen
  • Drag & Drop von Datei in TreeView

    • CRouchs
    • 3. Juni 2015 um 16:09

    Hallo zusammen,

    ich möchte gerne Dateien in einen bestehendes TreeView ziehen, deren Name dann auch dort an der entsprechenden Stelle erscheint. Dabei sollen die einzelnen TreeView Items vorher nicht selected werden.
    Mit D&D bin ich über WM_NOTIFY nicht wirklich weitergekommen. Und mit der Methode die TreeView Itemnamen über die Cursorposition zu ermitteln komme ich auch nicht vorwärts.
    Habt Ihr evtl. einen kurzen Beispielcode wie ich das realisieren könnte?

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™