explorerlistgadget

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Buggymonkey
Beiträge: 47
Registriert: 02.09.2004 19:36
Wohnort: Löhne
Kontaktdaten:

explorerlistgadget

Beitrag von Buggymonkey »

Hi,
hab mal nee frage:
wie kann ich, wenn ich 2 explorerlistgadgets habe, Daten vom einem ins andere ziehen, so das sie dahin kopiert werden???

Danke schon für die antworten

PS: wer rechtschreibfehler findet kann sie behalten!!! :D
walker
Beiträge: 278
Registriert: 29.08.2004 18:39
Wohnort: Bayern

Beitrag von walker »

Hi,

schau mal in der PureArea.net nach... da gibt's ein Beispiel dafür
(zuminest für's ListIconGadget... dürfte aber nicht schwer anzupassen sein)

cu
Benutzeravatar
Buggymonkey
Beiträge: 47
Registriert: 02.09.2004 19:36
Wohnort: Löhne
Kontaktdaten:

Beitrag von Buggymonkey »

walker hat geschrieben: zuminest für's ListIconGadget... dürfte aber nicht schwer anzupassen sein
ich bekomme es aber einfach nicht hin, enabledrop gibt zwar 1 zurück ich kann aber nicht droppen???

hier nochmal der code:

Code: Alles auswählen

; English forum: http://purebasic.myforums.net/viewtopic.php?t=7022&highlight=
; Author: LJ
; Date: 26. July 2003


; German forum: 
; Author: Freak (Timo Harter) 
; Date: 17. December 2002 
; Modified for use with ListGadget by Lance Jepsen (Sorted) 
; Date: 15. July 2003 

; -------------------------------------------------------------------------- 
; Drag'n' Drop mit TreeGadgets 
; by Timo Harter 
; 
; Syntax: 
; EnableDragDrop( #Gadget, DragMode, @DropProcedure() ) 
; 
; 
; DragMode : #Drag_LeftMouse  
;            #Drag_RightMouse 
; 
; @DropProcedure() 

;            Procedure DropProcedure(X.l, Y.l, Button.l, Item.l) 
; 


#TVN_BEGINDRAG       = -407 
#TVN_BEGINRDRAG      = -408 
#TVS_DISABLEDRAGDROP = $10 
#Drag_LeftMouse  = 1 
#Drag_RightMouse = 2 
#ListIcon = 3 

Global hWndTV.l, DropProc.l, DragDropMode.l, hDragIml.l, DragItem.l 

Procedure.l DragDropCallback(Window.l, Message.l, wParam.l, lParam.l) 
  Protected DoDrag.l, DropX.l, DropY.l, hItem.l, hItem2.l, dItem.l 
  result = #PB_ProcessPureBasicEvents 
  Select Message 
    Case #WM_NOTIFY 
      *lp.NMHDR = lParam 
      If *lp\code = #TVN_BEGINDRAG And (DragDropMode & #Drag_LeftMouse): DoDrag = #True: EndIf 
      If *lp\code = #TVN_BEGINRDRAG And (DragDropMode & #Drag_RightMouse): DoDrag = #True: EndIf 
      If DoDrag 
        *pnmtv.NMTREEVIEW = lParam 
        DragItem = *pnmtv\itemNew\hItem 
        hDragIml = SendMessage_(hWndTV, #TVM_CREATEDRAGIMAGE, 0, DragItem) 
        SendMessage_(hWndTV, #TVM_SELECTITEM, #TVGN_CARET, #NULL) 
        ImageList_BeginDrag_(hDragIml, 0, 0, 0) 
        ImageList_DragEnter_(GetParent_(hWndTV), 0, 0) 
        ImageList_DragShowNolock_(#TRUE) 
        ImageList_DragLeave_(hWndTV) 
        ShowCursor_(#FALSE) 
        SetCapture_(GetParent_(hWndTV)) 
        SendMessage_(hWndTV, #TVM_SELECTITEM, #TVGN_CARET, DragItem) 
      EndIf 
    Case #WM_MOUSEMOVE 
        If hDragIml 
          DropX = PeekW(@lParam) 
          DropY = PeekW(@lParam+2) 
          ImageList_DragMove_(DropX, DropY+20) 
          ImageList_DragShowNolock_(#FALSE) 
          ImageList_DragShowNolock_(#TRUE) 
        EndIf 
    Case #WM_LBUTTONUP 
        If hDragIml And (DragDropMode & #Drag_LeftMouse) 
          ImageList_EndDrag_() 
          ReleaseCapture_() 
          ShowCursor_(#TRUE) 
          ImageList_Destroy_(hDragIml) 
          hDragIml = #false 
          dItem = 0 
          hItem = SendMessage_(hWndTV, #TVM_GETNEXTITEM, #TVGN_ROOT, 0) 
          While hItem <> DragItem 
            hItem2 = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_CHILD, hItem) 
            Repeat 
              If hItem2 = #NULL: hItem2 = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_NEXT, hItem): EndIf 
              If hItem2 = #NULL: hItem = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_PARENT, hItem): EndIf 
            Until hItem2 <> #NULL 
            hItem = hItem2 
            dItem + 1 
          Wend 
          CallFunctionFast(DropProc, WindowMouseX(), WindowMouseY(), #Drag_LeftMouse, dItem) 
        EndIf 
    Case #WM_RBUTTONUP 
        If hDragIml And (DragDropMode & #Drag_RightMouse) 
          ImageList_EndDrag_() 
          ReleaseCapture_() 
          ShowCursor_(#TRUE) 
          ImageList_Destroy_(hDragIml) 
          hDragIml = #false 
          dItem = 0 
          hItem = SendMessage_(hWndTV, #TVM_GETNEXTITEM, #TVGN_ROOT, 0) 
          While hItem <> DragItem 
            hItem2 = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_CHILD, hItem) 
            Repeat 
              If hItem2 = #NULL: hItem2 = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_NEXT, hItem): EndIf 
              If hItem2 = #NULL: hItem = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_PARENT, hItem): EndIf 
            Until hItem2 <> #NULL 
            hItem = hItem2 
            dItem + 1 
          Wend 
          CallFunctionFast(DropProc, WindowMouseX(), WindowMouseY(), #Drag_RightMouse, DragItem)          
        EndIf 
  EndSelect 
  ProcedureReturn result 
EndProcedure 

Procedure.l EnableDragDrop(TVGadget.l, DragMode.l, DropProcedure.l) 
  Protected Style.l, hIml.l 
  hWndTV = GadgetID(TVGadget) 
  DropProc = DropProcedure 
  DragDropMode = DragMode 
  Style = GetWindowLong_(hWndTV, #GWL_STYLE) 
  Style = Style & (~#TVS_DISABLEDRAGDROP) 
  SetWindowLong_(hWndTV, #GWL_STYLE, Style) 
  If SendMessage_(hWndTV, #TVM_GETIMAGELIST, #TVSIL_NORMAL, 0) = #NULL 
    hIml = ImageList_Create_(16,16,#ILC_COLOR8,0,999) 
    SendMessage_(hWndTV, #TVM_SETIMAGELIST, #TVSIL_NORMAL, hIml) 
  EndIf 
  SetWindowCallback(@DragDropCallback()) 
  ProcedureReturn #True 
EndProcedure 

Procedure DropProcedure(X.l, Y.l, Button.l, Item.l) 
If Button = #Drag_LeftMouse 
  If x > 212 And x < 310 
     If y > 45 And y < 273 
      
        AddGadgetItem(#ListIcon,-1,"Item"+Str(Item)) 
         NbElements = CountGadgetItems(#ListIcon) 
         Dim Array.s(NbElements) 
         For k=0 To NbElements 
         Array(k) = GetGadgetItemText(#ListIcon, k,0) 
         Next 
         SortArray(Array(), 2, 0, NbElements) 
         ClearGadgetItemList(#ListIcon) 
         For k= 1 To NbElements 
         AddGadgetItem(#ListIcon, k, Array(k)) 
         Next 
          
     EndIf 
  EndIf 
EndIf 

; Un-REM (take off ";" in lines below when you need to determine X and Y coordinates of drop 
;  If Button = #Drag_LeftMouse 
;    MessageRequester("Drag'n Drop","Item Number "+Str(Item)+" has been dropped at X:"+Str(X)+" Y:"+Str(Y)+" using left Button.",#MB_ICONINFORMATION) 
;  Else 
;    MessageRequester("Drag'n Drop","Item Number "+Str(Item)+" has been dropped at X:"+Str(X)+" Y:"+Str(Y)+" using right Button.",#MB_ICONINFORMATION) 
;  EndIf 
EndProcedure 

#Tree = 1 

OpenWindow(0, 0, 0, 640, 480, #PB_Window_SystemMenu | #PB_Window_Screencentered, "Drag'n Drop") 
CreateGadgetList(WindowID()) 

TreeGadget(#Tree, 5, 5, 150, 250) 
hImg = LoadIcon_(0,#IDI_APPLICATION) 
AddGadgetItem(#Tree, 0, "Item3", hImg) 
AddGadgetItem(#Tree, 0, "Item2") 
OpenTreeGadgetNode(#Tree) 
  AddGadgetItem(#Tree, 0, "Item1") 
  AddGadgetItem(#Tree, 0, "Item0") 
CloseTreeGadgetNode(#Tree) 

ListIconGadget(#ListIcon,250,5, 80, 250, "Item Dropped", 76) 

EnableDragDrop(#Tree, #Drag_LeftMouse|#Drag_RightMouse, @DropProcedure()) 

While WaitWindowEvent() <> #PB_EventCloseWindow: Wend 
End 

; ExecutableFormat=Windows
; FirstLine=1
; EnableXP
; EOF
orange-blue
Beiträge: 556
Registriert: 04.09.2004 22:23
Kontaktdaten:

Beitrag von orange-blue »

Komisch bei mir funktionierts!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

@orange & buggy:

welche windows-versionen? :wink:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
orange-blue
Beiträge: 556
Registriert: 04.09.2004 22:23
Kontaktdaten:

Beitrag von orange-blue »

Aso! winxp...
Benutzeravatar
Buggymonkey
Beiträge: 47
Registriert: 02.09.2004 19:36
Wohnort: Löhne
Kontaktdaten:

Beitrag von Buggymonkey »

ich ahhbe windows XP prfessional,

der code der da oben steht funcst bei mir auch, aber nicht mehr wenn ich das treegadget mit einem explorergadget austausche!!!

danke für die hilfe
freak
PureBasic Team
Beiträge: 766
Registriert: 29.08.2004 00:20
Wohnort: Stuttgart

Beitrag von freak »

http://freak.purearea.net/help/

Das oberste Tutorial.
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

@freak: :allright:

Werds auch mit ins CodeArchiv aufnehmen, wenn Du nix dagegen hast.

Deine Tools wären übrigens auch etwas für den Showcase.... :wink:
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Antworten