DragStart Nummer des Gadget ermitteln

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

DragStart Nummer des Gadget ermitteln

Beitrag von NicknameFJ »

Hallo zusammen,

ich habe ein Gadget das sowohl bei #PB_Event_GadgetDrop Dateien empfangen als auch bei #PB_EventType_DragStart Dateien bereitstellen soll.

Das funktioniert soweit auch bestens. Was ich noch zusätzlich benötige, ist, beim #PB_Event_GadgetDrop Event zu erkennen ob #PB_Event_GadgetDrag vom selben Gadget ausgelöst wurde da ich dann kein Drag zulassen will. Also kein Drag and Drop vom und auf das selbe Gadget.

Hat da jemand einen Tipp für mich.

Code: Alles auswählen

EnableExplicit

Define Quit, i, Event, Gadget, Type, File$, Line


If OpenWindow(1,0,0,500,300,"TEST Drag Drop",#PB_Window_ScreenCentered | #PB_Window_SystemMenu)
  
  ListIconGadget(1,10,10,480,250,"TEXT",480, #PB_ListIcon_FullRowSelect)
  For i = 0 To 99
    AddGadgetItem(1,-1,"File " + Str(i))
  Next
  
    EnableGadgetDrop(1,#PB_Drop_Files,#PB_Drag_Copy)
  
  Repeat
    
    Event = WaitWindowEvent()
    Gadget = EventGadget()
    Type = EventType()
    
    Select Event
      Case #PB_Event_CloseWindow
        
        Quit = #True
        
        
      Case #PB_Event_Gadget
        
        Select Gadget
          Case 1
            
            Select Type
                
              Case #PB_EventType_DragStart
                Line = GetGadgetState(1)
                If Line <> -1
                File$ = "C:\Test_Drag_and_Drop " + Str(Line) + ".dat"
                
                DragFiles(File$,#PB_Drag_Copy)
                
                Debug "Drag Start mit Datei: " + File$
              EndIf
              
            EndSelect
            
        EndSelect
        
        
        
      Case #PB_Event_GadgetDrop
        Select Gadget
          Case 1
            
            
            If EventDropType() = #PB_Drop_Files
              
              Debug "Drop ausgeführt mit Datei(en): " + EventDropFiles()
              
            EndIf
            
        EndSelect
        
    EndSelect
    
  Until Quit = #True
  
EndIf

Grüße

NicknameFJ
PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Benutzeravatar
NicknameFJ
Beiträge: 324
Registriert: 03.06.2007 14:36
Wohnort: Von der Sonne aus gesehen der dritte Planet

Re: DragStart Nummer des Gadget ermitteln

Beitrag von NicknameFJ »

Ich habe das Problem jetzt so gelöst

Code: Alles auswählen

 EnableExplicit

Define Quit, i, Event, Gadget, Type, File$, Line


If OpenWindow(1,0,0,500,300,"TEST Drag Drop",#PB_Window_ScreenCentered | #PB_Window_SystemMenu)
 
  ListIconGadget(1,10,10,480,250,"TEXT",480, #PB_ListIcon_FullRowSelect)
  For i = 0 To 99
    AddGadgetItem(1,-1,"File " + Str(i))
  Next
 
    EnableGadgetDrop(1,#PB_Drop_Files,#PB_Drag_Move)
 
   ; erlaubt hier nur #PB_Drag_Move

  Repeat
   
    Event = WaitWindowEvent()
    Gadget = EventGadget()
    Type = EventType()
   
    Select Event
      Case #PB_Event_CloseWindow
       
        Quit = #True
       
       
      Case #PB_Event_Gadget
       
        Select Gadget
          Case 1
           
            Select Type
               
              Case #PB_EventType_DragStart
                Line = GetGadgetState(1)
                If Line <> -1
                File$ = "C:\Test_Drag_and_Drop " + Str(Line) + ".dat"
               
                DragFiles(File$,#PB_Drag_Copy)

                ; hier nur als #PB_Drag_Copy bereitstellen
               
                Debug "Drag Start mit Datei: " + File$
              EndIf
             
            EndSelect
           
        EndSelect
       
       
       
      Case #PB_Event_GadgetDrop
        Select Gadget
          Case 1
           
           
            If EventDropType() = #PB_Drop_Files
             
              Debug "Drop ausgeführt mit Datei(en): " + EventDropFiles()
             
            EndIf
           
        EndSelect
       
    EndSelect
   
  Until Quit = #True
 
EndIf


PS: Alle im Text enthaltenen Schreibfehler sind beabsichtigt und dienen der Belustigung aller

Bild
Antworten