Drag'n'Drop in ListIcon... ermitteln?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Drag'n'Drop in ListIcon... ermitteln?

Beitrag von Xaby »

Code: Alles auswählen

Procedure.l DropOnGadget(Gadget.l, Window.l)
  Protected _ProcedureReturn.b
  ;If GetActiveWindow()=Window
  If WindowMouseX(Window)>=GadgetX(Gadget) and WindowMouseX(Window)<GadgetX(Gadget)+GadgetWidth(Gadget) and WindowMouseY(Window)>=GadgetY(Gadget) and WindowMouseY(Window)<GadgetY(Gadget)+ GadgetHeight(Gadget) 
    _ProcedureReturn= 1
  Else
    _ProcedureReturn= 0
  EndIf
  ;EndIf  
  ProcedureReturn _ProcedureReturn
EndProcedure  

OpenWindow(0,0,0,740,540,"Blubb",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) 
CreateGadgetList(WindowID(0)) 


ListIconGadget(1,5,10,200,360,"Liste 1",80,#PB_ListIcon_MultiSelect|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_CheckBoxes)
ListIconGadget(3,250,50,360,280,"Liste 3",280,#PB_ListIcon_MultiSelect|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_CheckBoxes)
ListIconGadget(2,5,380,600,130,"Liste 2",200,#PB_ListIcon_MultiSelect|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_CheckBoxes)

AddGadgetItem(3,0,"XYT")

AddGadgetItem(2,0,"XYT")
AddGadgetItem(2,1,"Blubb")
AddGadgetItem(2,2,"Anfang Xaby")

ChangeListIconGadgetDisplay(1, #PB_ListIcon_LargeIcon) 
ChangeListIconGadgetDisplay(2, #PB_ListIcon_LargeIcon) 

define Event, GadgetNr, MenuNr, Quit, MLC, XDrop, YDrop, PrivateDrop, DropSpreitList, EventType

;EventType() = #PB_EventType_DragStart

EnableGadgetDrop(1,#PB_Drop_Private,#PB_Drag_Copy,1)
EnableGadgetDrop(1,#PB_Drop_Private,#PB_Drag_Copy,2)
EnableGadgetDrop(3,#PB_Drop_Private,#PB_Drag_Copy,1) ; Liste mit Objekten
EnableGadgetDrop(3,#PB_Drop_Private,#PB_Drag_Copy,2)



Repeat 
  
  Event=WaitWindowEvent()
  
  If Event=#PB_Event_CloseWindow
    Quit=1
  EndIf
  
  If Event=#PB_Event_Gadget
    GadgetNr=EventGadget()
    
    If GadgetNr=2
      If EventType = #PB_EventType_DragStart
        DragPrivate(1)
      EndIf  
    EndIf
    

    If GadgetNr=3
      EventType=EventType()
      If EventType = #PB_EventType_DragStart
        DragPrivate(2)
      ElseIF EventType = #PB_EventType_LeftClick
        DropSpreitList=GetGadgetState(3)
        debug DropSpreitList
        
      EndIf
      
    EndIF
    
    
  EndIf  
  
  If Event=#PB_Event_GadgetDrop
    
    If EventDropType()=#PB_Drop_Private
      
      
      PrivateDrop=EventDropPrivate()
      
      If PrivateDrop=1 or PrivateDrop=2
        
         
        If PrivateDrop=1
          AddGadgetItem(1,0,GetGadgetItemText(2,(GetGadgetState(2)))) 
          SetGadgetItemColor(1,0,#PB_Gadget_BackColor,RGB(Random(255),Random(255),Random(255)))
          AddGadgetItem(3,0,   GetGadgetItemText(2,(GetGadgetState(2)))   +" "+Str(Random(100)))
        ElseIf PrivateDrop=2 
          If DropOnGadget(1,0)
            AddGadgetItem(1,0,GetGadgetItemText(3,(GetGadgetState(3)))) 
            SetGadgetItemColor(1,0,#PB_Gadget_BackColor,RGB(Random(255),Random(255),Random(255)))
            AddGadgetItem(3,0,   GetGadgetItemText(3,(GetGadgetState(3)))   +" "+Str(Random(100))) 
          ElseIf DropOnGadget(3,0) and DropSpreitList<>-1
            SetGadgetItemColor(3,GetGadgetState(3),#PB_Gadget_BackColor,#Yellow)
            SetGadgetItemColor(3,DropSpreitList,#PB_Gadget_BackColor,#Green)
            DropSpreitList=-1
          EndIf 
        EndIf  
        
        
      EndIf
      
    EndIf
    
  EndIF
  
 
  
Until Quit=1
Irgendwo ist noch ein Fehler. Das untere Gadget funktioniert erst richtig, wenn man einmal das rechte Gadget benutzt hat.

Aber die eigentliche Frage ist, wie ich es schaffe, im rechten Gadget (Nr. 3) Elemente zu verschieben.

Ich hab sie erstmal mit Farbe makiert, aber irgendwie trifft die nicht immer ...

Jemand eine Idee? Oder noch besser eine Lösung?

Dank euch :allright:
Kinder an die Macht http://scratch.mit.edu/