Was stimmt an folgendem Code nicht? In dem Listicongadget mit 6 Spalten sollen alle Spalten gelöscht werden und wieder hinzugefügt werden. Allerdings kommen da ganz unerwünschte Ergebnisse.
Code: Alles auswählen
Procedure DeleteGadgetColumn(gadget,item)
ProcedureReturn SendMessage_(GadgetID(gadget),#LVM_DELETECOLUMN,item,0)
EndProcedure
Procedure CountGadgetColumns(gadget)
col.LV_COLUMN\mask = #LVCF_WIDTH
Repeat
a+1:x=SendMessage_(GadgetID(gadget),#LVM_GETCOLUMN,a,@col)
Until x = 0
ProcedureReturn a
EndProcedure
WinID0.l=OpenWindow(0,0,0,600,400, #PB_Window_SystemMenu | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "Test")
If CreateGadgetList(WindowID())
ListIconGadget(0, 10,10,580,300, "",0,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_GridLines|#PB_ListIcon_CheckBoxes)
For i=0 To 5
AddGadgetColumn(0,i,"Spalte "+Str(i),80)
Next i
ButtonGadget(1,10,320,100,20,"Neu füllen")
ButtonGadget(2,150,320,100,20,"Ende")
EndIf
For i=1 To 10
AddGadgetItem(0,-1,"Text 0"+Chr(10)+"Text 1"+Chr(10)+"Text 2"+Chr(10)+"Text 3"+Chr(10)+"Text 4"+Chr(10)+"Text 5")
Next i
Repeat
EventID.l = WaitWindowEvent()
EvType.l=EventType()
Select EventID
Case #PB_EventGadget
EvType.l=EventType()
evgad.l=EventGadgetID()
Select EventGadgetID()
Case 0
Case 1
MessageRequester("Test","Das Gadget hat "+Str(CountGadgetColumns(0))+ " Spalten",#PB_MessageRequester_Ok)
For i=1 To CountGadgetColumns(0)
DeleteGadgetColumn(0,0)
Next i
MessageRequester("Test","Die Spalten sollten jetzt alle gelöscht sein",#PB_MessageRequester_Ok)
For i=0 To 5
AddGadgetColumn(0,i,"Neue Spalte "+Str(i),80)
Next i
MessageRequester("Test","6 neue Spalten wurden hinzugefügt",#PB_MessageRequester_Ok)
For i=1 To 10
AddGadgetItem(0,-1,"Neu Text 0"+Chr(10)+"Neu Text 1"+Chr(10)+"Neu Text 2"+Chr(10)+"Neu Text 3"+Chr(10)+"Neu Text 4"+Chr(10)+"Neu Text 5")
Next i
Case 2:End
EndSelect
EndSelect
ForEver