Listicongadget: Spalten entfernen und zählen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Calloway
Beiträge: 106
Registriert: 15.09.2004 23:26

Listicongadget: Spalten entfernen und zählen

Beitrag von Calloway »

Hallo!

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