wenn man sie in einer prozedur erstellt kann aus einer anderen
prozedur nicht mehr darauf zugegrifen werden.
folgendes Beispiel ist unter PB 3.94 lauffähig:
Code: Alles auswählen
Structure TableLine
index.l
y.l
yl.l
EndStructure
Structure TableColumn
x.l
y.l
xl.l
yl.l
name.s
id.l
EndStructure
Enumeration
#Window_0
EndEnumeration
Procedure TableGadget(GadgetNr,x,y,width,height,name$,SpaltenBreite)
If CreateGadgetList(WindowID())
ScrollAreaGadget(GadgetNr, x, y, width, height, 80, 20, 15, #PB_ScrollArea_Single)
NewList TableColumnList.TableColumn()
NewList TableLineList.TableLine()
AddElement(TableLineList())
AddElement(TableColumnList())
TableColumnList()\x=30
TableColumnList()\y=0
TableColumnList()\xl=SpaltenBreite
TableColumnList()\yl=20
TableColumnList()\name=name$
TableColumnList()\id=ButtonGadget(#PB_Any, TableColumnList()\x,TableColumnList()\y, TableColumnList()\xl, TableColumnList()\yl, TableColumnList()\name, #PB_Button_MultiLine)
CloseGadgetList()
EndIf
EndProcedure
Procedure AddTableColumn(GadgetNr,Position,name$,Breite)
OpenGadgetList(GadgetNr)
istbreite=GetGadgetAttribute(GadgetNr,#PB_ScrollArea_InnerWidth)
SetGadgetAttribute(GadgetNr,#PB_ScrollArea_InnerWidth,Breite+istbreite)
LastElement(TableColumnList())
x=TableColumnList()\x
y=TableColumnList()\y
xl=TableColumnList()\xl
yl=TableColumnList()\yl
;TableColumnList()\title=titel$
AddElement(TableColumnList())
TableColumnList()\x=x+xl
TableColumnList()\y=y
TableColumnList()\xl=Breite
TableColumnList()\yl=yl
TableColumnList()\name=name$
TableColumnList()\id=ButtonGadget(#PB_Any, TableColumnList()\x, TableColumnList()\y, TableColumnList()\xl, TableColumnList()\yl, TableColumnList()\name, #PB_Button_MultiLine)
CloseGadgetList()
EndProcedure
Procedure AddTableLine(GadgetNr)
OpenGadgetList(GadgetNr)
isthoehe=GetGadgetAttribute(GadgetNr,#PB_ScrollArea_InnerHeight)
SetGadgetAttribute(GadgetNr,#PB_ScrollArea_InnerHeight,15+isthoehe)
Spaltenanzahl = CountList(TableColumnList())
LastElement(TableLineList())
index=TableLineList()\index
y=TableLineList()\y
yl=TableLineList()\yl
AddElement(TableLineList())
TableLineList()\index=index+1
TableLineList()\y=y+yl
TableLineList()\yl=15
indextaste=ButtonGadget(#PB_Any,0,TableLineList()\y+20,30,15,Str(TableLineList()\index))
ForEach TableColumnList()
x=TableColumnList()\x
y=TableColumnList()\yl+TableLineList()\y
xl=TableColumnList()\xl
yl=TableLineList()\yl
StringGadget(#PB_Any,x,y,xl-2,yl-1,"",#PB_String_MultiLine|#PB_String_BorderLess)
Next
CloseGadgetList()
EndProcedure
Procedure SaveTable()
EndProcedure
Procedure LoadTable()
EndProcedure
Procedure Open_Window_0()
If OpenWindow(#Window_0, 74, 19, 459, 285, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "TableGadget")
TableGadget(1,5,5,300,200,"Index",50)
AddTableColumn(1,0,"Bemerkung",100)
AddTableColumn(1,0,"NotizAnweisung",100)
AddTableColumn(1,0,"Bemerkung",100)
AddTableColumn(1,0,"Bemerkung2",100)
For xxx= 1 To 50
AddTableLine(1)
Next
EndIf
EndeProcedure
Open_Window_0()
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget
;Debug "WindowID: " + Str(EventWindowID())
GadgetID = EventGadgetID()
EndIf
Until Event = #PB_EventCloseWindow
End
Code: Alles auswählen
Structure TableLine
index.l
y.l
yl.l
EndStructure
Structure TableColumn
x.l
y.l
xl.l
yl.l
name.s
id.l
EndStructure
Enumeration
#Window_0
EndEnumeration
Procedure TableGadget(GadgetNr,x,y,width,height,name$,SpaltenBreite)
If CreateGadgetList(WindowID(#Window_0))
ScrollAreaGadget(GadgetNr, x, y, width, height, 80, 20, 15, #PB_ScrollArea_Single)
NewList TableColumnList.TableColumn()
NewList TableLineList.TableLine()
AddElement(TableLineList())
AddElement(TableColumnList())
TableColumnList()\x=30
TableColumnList()\y=0
TableColumnList()\xl=SpaltenBreite
TableColumnList()\yl=20
TableColumnList()\name=name$
TableColumnList()\id=ButtonGadget(#PB_Any, TableColumnList()\x,TableColumnList()\y, TableColumnList()\xl, TableColumnList()\yl, TableColumnList()\name, #PB_Button_MultiLine)
CloseGadgetList()
EndIf
EndProcedure
Procedure AddTableColumn(GadgetNr,Position,name$,Breite)
OpenGadgetList(GadgetNr)
istbreite=GetGadgetAttribute(GadgetNr,#PB_ScrollArea_InnerWidth)
SetGadgetAttribute(GadgetNr,#PB_ScrollArea_InnerWidth,Breite+istbreite)
LastElement(TableColumnList())
x=TableColumnList()\x
y=TableColumnList()\y
xl=TableColumnList()\xl
yl=TableColumnList()\yl
;TableColumnList()\title=titel$
AddElement(TableColumnList())
TableColumnList()\x=x+xl
TableColumnList()\y=y
TableColumnList()\xl=Breite
TableColumnList()\yl=yl
TableColumnList()\name=name$
TableColumnList()\id=ButtonGadget(#PB_Any, TableColumnList()\x, TableColumnList()\y, TableColumnList()\xl, TableColumnList()\yl, TableColumnList()\name, #PB_Button_MultiLine)
CloseGadgetList()
EndProcedure
Procedure AddTableLine(GadgetNr)
OpenGadgetList(GadgetNr)
isthoehe=GetGadgetAttribute(GadgetNr,#PB_ScrollArea_InnerHeight)
SetGadgetAttribute(GadgetNr,#PB_ScrollArea_InnerHeight,15+isthoehe)
Spaltenanzahl = CountList(TableColumnList())
LastElement(TableLineList())
index=TableLineList()\index
y=TableLineList()\y
yl=TableLineList()\yl
AddElement(TableLineList())
TableLineList()\index=index+1
TableLineList()\y=y+yl
TableLineList()\yl=15
indextaste=ButtonGadget(#PB_Any,0,TableLineList()\y+20,30,15,Str(TableLineList()\index))
ForEach TableColumnList()
x=TableColumnList()\x
y=TableColumnList()\yl+TableLineList()\y
xl=TableColumnList()\xl
yl=TableLineList()\yl
StringGadget(#PB_Any,x,y,xl-2,yl-1,"",#PB_String_MultiLine|#PB_String_BorderLess)
Next
CloseGadgetList()
EndProcedure
Procedure SaveTable()
EndProcedure
Procedure LoadTable()
EndProcedure
Procedure Open_Window_0()
If OpenWindow(#Window_0, 74, 19, 459, 285, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "TableGadget")
TableGadget(1,5,5,300,200,"Index",50)
AddTableColumn(1,0,"Bemerkung",100)
AddTableColumn(1,0,"NotizAnweisung",100)
AddTableColumn(1,0,"Bemerkung",100)
AddTableColumn(1,0,"Bemerkung2",100)
For xxx= 1 To 50
AddTableLine(1)
Next
EndIf
EndProcedureOpen_Window_0()
;Schleife
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget
;Debug "WindowID: " + Str(EventWindowID())
GadgetID = EventGadget()
EndIf
Until Event = #PB_Event_CloseWindow
End
;