Drag&Drop »»» auch für Anfänger geeignet (mit Anleitung)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

> dass wenn sich z.B. ein für Drag & Drop vorgesehenes ListIconGadget innerhalb eines FrameGadgets befindet die Message den Empfänger nicht erreicht.
Das liegt daran, dass ein Frame3DGadget() keine Einträge empfangen kann. Das scheinst du aber hinzukriegen, indem du
> mit SetParent_() das FrameGadget als Parent des ListIconGadget zu setzen.
Interessant! :allright:
alo90 hat geschrieben:Wäre es in DOCs auch akzeptabel für dich ? Die AboutBox wollte ich eigentlich nicht mehr weiter auffüllen
Das kannst du machen, wie du willst! (Ist ja dein Projekt, nicht meines).
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Hat einer meinen Code mal mit Frame3D Gadget getestet?
Funktioniert ohne Änderungen :freak:
Entweder erst das ListIcon erstellen oder das Frame3D als Dropclienten
angeben. Warum immer so kompliziert?
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Wieso funktioniert das hier nicht?

Code: Alles auswählen

Procedure OpenWindow_Window_0()
  If OpenWindow(0, 585, 213, 283, 234, "#Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(0))
      ListIconGadget(0, 15, 10, 255, 210, "Gadget_0", 100, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
    EndIf
  EndIf
EndProcedure

Procedure OpenWindow_Window_1()
  If OpenWindow(1, 0, 213, 283, 234, "#Window_1", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(1))
      ListIconGadget(1, 15, 10, 255, 210, "Gadget_1", 100, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
    EndIf
  EndIf
EndProcedure
OpenWindow_Window_1()
OpenWindow_Window_0()
DragAcceptFiles_(GadgetID(0), 1)
AddGadgetItem (1, -1,"Test1")
AddGadgetItem (0, -1,"Test")
Define.l Buffer = AllocateMemory(1000)
Define *DropHandle

Repeat
  Event = WaitWindowEvent()
  Select Event
 
    Case #WM_DROPFILES
      *DropHandle = EventwParam()
      If *DropHandle
        DragQueryFile_(*DropHandle, 0, Buffer, 1000)
        DragFinish_(*DropHandle)
        Debug PeekS(Buffer)
      EndIf
     
     
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = 0
      EndIf

    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = 0
        Break
      EndIf
  EndSelect
ForEver

FreeMemory(Buffer) 
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Antworten