May be already answered somewhere in this forum - but did not find it yet.


In my little test it seems to...
Code: Select all
Structure MyGadget
Number.i
ID.i
EndStructure
Structure AllMyGadgets
HeaderInfo$
SomeOtherInfo$
List GadgetList.MyGadget()
EndStructure
Global MyGadgets.AllMyGadgets
Procedure.q AvailPhysMem() ; - Get available physical memory
Protected MemSize.q = 0
Protected memex.MEMORYSTATUSEX
memex\dwLength = SizeOf(MEMORYSTATUSEX)
GlobalMemoryStatusEx_(@memex)
MemSize = memex\ullAvailPhys
ProcedureReturn MemSize
EndProcedure
Procedure CreateGadgets() ; create 5051 crazy gadgets
With MyGadgets
If Not ListSize(\GadgetList())
AddElement(\GadgetList())
\GadgetList()\Number = ContainerGadget(#PB_Any,0,0,400,400,#PB_Container_BorderLess)
\GadgetList()\ID = GadgetID(\GadgetList()\Number)
For X.i = 0 To 49
AddElement(\GadgetList())
\GadgetList()\Number = ContainerGadget(#PB_Any,0,0,400,400,#PB_Container_BorderLess)
\GadgetList()\ID = GadgetID(\GadgetList()\Number)
SetGadgetColor(\GadgetList()\Number, #PB_Gadget_BackColor, Random($FFFFFF))
For Y.i = 0 To 49
AddElement(\GadgetList())
\GadgetList()\Number = ContainerGadget(#PB_Any,Y<<3,Y<<3,8,8,#PB_Container_BorderLess)
\GadgetList()\ID = GadgetID(\GadgetList()\Number)
SetGadgetColor(\GadgetList()\Number, #PB_Gadget_BackColor, Random($FFFFFF))
CloseGadgetList()
Next
For Y.i = 0 To 49
AddElement(\GadgetList())
\GadgetList()\Number = StringGadget(#PB_Any,Random(300),Random(379),100,21,"some text")
\GadgetList()\ID = GadgetID(\GadgetList()\Number)
Next
CloseGadgetList()
SetWindowTitle(0,"MyGadgets "+Str(AvailPhysMem()/$400)+" KB RAM")
While WindowEvent() : Wend
Next
CloseGadgetList()
EndIf
EndWith
EndProcedure
Procedure RemoveGadgets()
With MyGadgets
If ListSize(\GadgetList())
FirstElement(\GadgetList())
FreeGadget(\GadgetList()\Number)
ClearList(\GadgetList())
EndIf
EndWith
SetWindowTitle(0,"MyGadgets "+Str(AvailPhysMem()/$400)+" KB RAM")
EndProcedure
If OpenWindow(0,0,0,400,420,"MyGadgets "+Str(AvailPhysMem()/$400)+" KB RAM",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
AddKeyboardShortcut(0,#PB_Shortcut_F1,1)
AddKeyboardShortcut(0,#PB_Shortcut_F2,2)
AddKeyboardShortcut(0,#PB_Shortcut_Escape,3)
TextGadget(#PB_Any, 0,400,400,20, "F1: install - F2: remove",#PB_Text_Center)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Menu
Select EventMenu()
Case 1 : CreateGadgets()
Case 2 : RemoveGadgets()
Case 3 : Break
EndSelect
Case #PB_Event_CloseWindow : Break
EndSelect
ForEver
CloseWindow(0)
EndIf
End