Ich benutze UseGadgetList um im Programverlauf weitere Gadgets in die Scrollarea hinzuzufügen.
Allerdings kann ich diese Gadgets nicht benutzen (Ich kann die Stringgadgets nicht anklicken) und sobald die neuen erstellten Gadgets dann über den aktuell Sichtbaren bereich hinausgehen verschieben sich alle Gadgets in der Area wenn ich Scrolle....
Also auf jeden Fall mache ich anscheinend irgendetwas falsch.
Hier mal der Code
Code: Alles auswählen
EnableExplicit
Enumeration
#W_Main
EndEnumeration
Enumeration
#M_Open
#M_Save
#M_Close
EndEnumeration
Enumeration
#G_ProgramScroll
EndEnumeration
Structure newline
gadget1.i
gadget2.i
gadget3.i
EndStructure
Global NewList lines.newline()
Procedure Window()
If OpenWindow(#W_Main, 0, 0, 800, 520, "", #PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_Invisible)
If CreateMenu(#W_Main,WindowID(#W_Main))
MenuTitle("File")
MenuItem(#M_Open,"Open")
MenuItem(#M_Save,"Save")
MenuBar()
MenuItem(#M_Close,"Close")
ScrollAreaGadget(#G_ProgramScroll, 10, 10, 230, 480, 210, 470)
AddElement(lines())
lines()\gadget1 = StringGadget(#PB_Any, 10, 20, 40, 20, "0")
lines()\gadget2 = StringGadget(#PB_Any, 55, 20, 55, 20, "")
lines()\gadget3 = StringGadget(#PB_Any, 115, 20, 60, 20, "")
CloseGadgetList()
EndIf
EndIf
EndProcedure
Procedure init()
Window()
HideWindow(#W_Main,0)
EndProcedure
Procedure close()
End
EndProcedure
Procedure loop()
Protected event.l, gadget.l, menu.l
Repeat
event = WaitWindowEvent(20)
Protected timer.i
If ElapsedMilliseconds() > timer + 500
timer = ElapsedMilliseconds()
AddElement(lines())
; Scrollarea bei bedarf erweitern
If ListSize(lines())*25+20+20 > 470
SetGadgetAttribute(#G_ProgramScroll,#PB_ScrollArea_InnerHeight,ListSize(lines())*25+20+20+10)
Else
SetGadgetAttribute(#G_ProgramScroll,#PB_ScrollArea_InnerHeight,470)
EndIf
UseGadgetList(GadgetID(#G_ProgramScroll))
lines()\gadget1 = StringGadget(#PB_Any, 10, 20+25*ListIndex(lines()), 40, 20, Str(ListIndex(lines())))
lines()\gadget2 = StringGadget(#PB_Any, 55, 20+25*ListIndex(lines()), 55, 20, "")
lines()\gadget3 = StringGadget(#PB_Any, 115, 20+25*ListIndex(lines()), 60, 20, "")
EndIf
Select event
Case #WM_PAINT
Continue
Case 0
Continue
Case #WM_CLOSE
close()
Case #PB_Event_Gadget
gadget = EventGadget()
Select gadget
EndSelect
EndSelect
ForEver
EndProcedure
Procedure main()
init()
loop()
EndProcedure
main()