- Set Gadget Window : move gadget to another window
- Set Gadget Parent : move gadget to another container gadget ( containerGadget, panelGadget or scrollareaGadget)
- cross-platform code (but i didn't test on MAC or linux)
Code: Select all
EnableExplicit
Procedure SetGadgetWindow(ID, Window)
If IsWindow(Window)
Protected old=UseGadgetList(WindowID(Window))
Protected x=GadgetX(ID)
Protected y=GadgetY(ID)
Protected w=GadgetWidth(ID)
Protected h=GadgetHeight(ID)
Protected Dummy1=TextGadget(#PB_Any, 0, 0, 0, 0, "")
Protected Dummy2=TextGadget(#PB_Any, 0, 0, 0, 0, "")
Protected GadgerMover=SplitterGadget(#PB_Any, 0, 0, 500, 500, ID, Dummy2)
SetGadgetAttribute(GadgerMover, #PB_Splitter_FirstGadget, Dummy1)
FreeGadget(GadgerMover)
ResizeGadget(ID, x, y, w, h)
UseGadgetList(old)
EndIf
EndProcedure
Procedure SetGadgetParent(ID, GadgetParent, item=0)
Select GadgetType(GadgetParent)
Case #PB_GadgetType_Container, #PB_GadgetType_Panel, #PB_GadgetType_ScrollArea
OpenGadgetList(GadgetParent, item)
Protected x=GadgetX(ID)
Protected y=GadgetY(ID)
Protected w=GadgetWidth(ID)
Protected h=GadgetHeight(ID)
Protected Dummy1=TextGadget(#PB_Any, 0, 0, 0, 0, "")
Protected Dummy2=TextGadget(#PB_Any, 0, 0, 0, 0, "")
Protected GadgerMover=SplitterGadget(#PB_Any, 0, 0, 500, 500, ID, Dummy2)
SetGadgetAttribute(GadgerMover, #PB_Splitter_FirstGadget, Dummy1)
FreeGadget(GadgerMover)
ResizeGadget(ID, x, y, w, h)
CloseGadgetList()
EndSelect
EndProcedure
; ********************
; Example @ eddy
; ********************
#w=500
#h=500
If OpenWindow(0, 0, 0, #w, #h, "window1", #PB_Window_SizeGadget | #PB_Window_SystemMenu)
ButtonGadget(10, 5, 5, 250, 50, "")
ButtonGadget(20, 5, 65, 250, 50, "")
ContainerGadget(100, 55, 200, 400, 200, #PB_Container_Double)
CloseGadgetList()
EndIf
If OpenWindow(1, 310, 310, #w, #h, "window2", #PB_Window_SizeGadget | #PB_Window_SystemMenu)
ButtonGadget(30, 5, 125, 250, 50, "I'm from Window 2")
EndIf
SetGadgetParent(10, 100)
SetGadgetParent(20, 100)
SetGadgetText(10, "I'm inside the Container")
SetGadgetText(20, "Me too!")
SetGadgetWindow(30, 0)
Repeat
Define e=WaitWindowEvent()
Define g=EventGadget()
Define t=EventType()
Select e
Case #PB_Event_CloseWindow
Case #PB_Event_SizeWindow
Case #PB_Event_ActivateWindow
Case #PB_Event_SysTray
Case #PB_Event_Gadget
Debug g
Case #PB_Event_GadgetDrop
EndSelect
Until e=#PB_Event_CloseWindow
End