Seite 1 von 2

ListIconGadget alle Spalten löschen

Verfasst: 06.05.2021 19:03
von marcelx
Hallo zusammen,

wie kann ich alle Spalten ein ListIconGadget löschen?
Mit RemoveGadgetColumn kann ich eine Spalte löschen an eine Position.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 220, 150, "AAA", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(0,10,10,200,100,"BBB",100)
  AddGadgetColumn(0, 1, "Address", 200)

  For a = 1 To 10 : AddGadgetItem (0, -1, "Item "+Str(a)) : Next    ; fügt 10 Einträge hinzu
  ButtonGadget(1, 10, 120, 150, 20, "Clear Listview contents")
  Repeat
    Event = WaitWindowEvent()
    If Event = #PB_Event_Gadget
      If EventGadget() = 1
          debug "DEL"
      EndIf
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf
Danke und Gruß
MarcelX

Re: ListIconGadget alle Spalten löschen

Verfasst: 06.05.2021 19:31
von marcelx
So funktioniert es - wie bestimme ich den Wert für maxPos?

Code: Alles auswählen

If OpenWindow(0, 0, 0, 220, 150, "AAA", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(0,10,10,200,100,"BBB",100)
  AddGadgetColumn(0, 1, "CC", 50)
  AddGadgetColumn(0, 2, "DD", 50)
  maxPos=2
  For a = 1 To 10 : AddGadgetItem (0, -1, "Item "+Str(a)) : Next    ; fügt 10 Einträge hinzu
  ButtonGadget(1, 10, 120, 150, 20, "Clear Listview contents")
  Repeat
    Event = WaitWindowEvent()
    If Event = #PB_Event_Gadget
      If EventGadget() = 1
        For pos = 0 To maxPos
          Debug pos
          RemoveGadgetColumn(0, 0)
        Next
      EndIf
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf

Re: ListIconGadget alle Spalten löschen

Verfasst: 06.05.2021 19:54
von Andesdaf
RemoveGadgetColumn() unterstützt #PB_All zum Löschen aller Spalten. Für die Spaltenanzahl gibt es GetGadgetAttribute() mit entsprechender Parameterbelegung, siehe Hilfe.

Re: ListIconGadget alle Spalten löschen

Verfasst: 06.05.2021 20:45
von marcelx
Auch bei PB 5.31?
Habe ich nicht gesehen bei Hilfe

Re: ListIconGadget alle Spalten löschen

Verfasst: 06.05.2021 20:53
von Kiffi
marcelx hat geschrieben: 06.05.2021 20:45Auch bei PB 5.31?
erst seit Version 5.60

Re: ListIconGadget alle Spalten löschen

Verfasst: 07.05.2021 11:27
von mk-soft
Small hack

Code: Alles auswählen

;-TOP

; ********

; By mk-soft

Macro _PB_(Function)
  Function
EndMacro

Procedure MyRemoveGadgetColumn(Gadget, Column)
  Protected cnt, i
  If Column = #PB_All
    ClearGadgetItems(Gadget)
    cnt = GetGadgetAttribute(Gadget, #PB_ListIcon_ColumnCount) - 1
    For i = cnt To 0 Step -1
      RemoveGadgetColumn(Gadget, i)
    Next
  Else
    _PB_(RemoveGadgetColumn)(Gadget, Column)
  EndIf
EndProcedure

Macro RemoveGadgetColumn(Gadget, Column)
  MyRemoveGadgetColumn(Gadget, Column)
EndMacro

; ********

If OpenWindow(0, 0, 0, 220, 150, "AAA", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(0,10,10,200,100,"BBB",100)
  AddGadgetColumn(0, 1, "CC", 50)
  AddGadgetColumn(0, 2, "DD", 50)
  maxPos=2
  For a = 1 To 10 : AddGadgetItem (0, -1, "Item "+Str(a)) : Next    ; fügt 10 Einträge hinzu
  ButtonGadget(1, 10, 120, 150, 20, "Clear Listview contents")
  Repeat
    Event = WaitWindowEvent()
    If Event = #PB_Event_Gadget
      If EventGadget() = 1
        RemoveGadgetColumn(0, #PB_All)
      EndIf
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf

Re: ListIconGadget alle Spalten löschen

Verfasst: 07.05.2021 13:53
von marcelx
Danke, aber #PB_ListIcon_ColumnCount gibt es nicht bei PB 5.31

Re: ListIconGadget alle Spalten löschen

Verfasst: 07.05.2021 14:09
von Kiffi
wieso nicht so?

Code: Alles auswählen

    For Counter = 0 To 999
      RemoveGadgetColumn(0, 0)
    Next
Grüße ... Peter

Re: ListIconGadget alle Spalten löschen

Verfasst: 07.05.2021 18:20
von Shardik
Für PureBasic-Versionen älter als 5.60 habe ich im englischen Forum bereits 2014 dieses Multiplattform-Beispiel gezeigt, um die Anzahl Spalten in einem ListIconGadget zu ermitteln.

So kann man die Anzahl Spalten in Windows mit API ermitteln:

Code: Alles auswählen

NumberOfColumns = SendMessage_(SendMessage_(GadgetID(ListIconGadgetID), #LVM_GETHEADER, 0, 0), #HDM_GETITEMCOUNT, 0, 0)

Re: ListIconGadget alle Spalten löschen

Verfasst: 07.05.2021 19:49
von Kiffi
Shardik hat geschrieben: 07.05.2021 18:20So kann man die Anzahl Spalten in Windows mit API ermitteln: [...]
wie bereits oben angedeutet: PB meckert (zumindest nicht unter Windows) nicht, wenn man nicht vorhandene Spalten mit RemoveGadgetColumn() löschen will. Da marcelx ja alle Spalten löschen möchte, kann man obigen Code von mir verwenden und benötigt somit nicht die Anzahl der vorhandenen Spalten.

Grüße ... Peter