ListIconGadget alle Spalten löschen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

ListIconGadget alle Spalten löschen

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: ListIconGadget alle Spalten löschen

Beitrag 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
Win-10, PB 5.31 (Windows - x86)
Andesdaf
Moderator
Beiträge: 2658
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: ListIconGadget alle Spalten löschen

Beitrag von Andesdaf »

RemoveGadgetColumn() unterstützt #PB_All zum Löschen aller Spalten. Für die Spaltenanzahl gibt es GetGadgetAttribute() mit entsprechender Parameterbelegung, siehe Hilfe.
Win11 x64 | PB 6.00 (x64)
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: ListIconGadget alle Spalten löschen

Beitrag von marcelx »

Auch bei PB 5.31?
Habe ich nicht gesehen bei Hilfe
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: ListIconGadget alle Spalten löschen

Beitrag von Kiffi »

marcelx hat geschrieben: 06.05.2021 20:45Auch bei PB 5.31?
erst seit Version 5.60
Hygge
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: ListIconGadget alle Spalten löschen

Beitrag 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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
marcelx
Beiträge: 424
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: ListIconGadget alle Spalten löschen

Beitrag von marcelx »

Danke, aber #PB_ListIcon_ColumnCount gibt es nicht bei PB 5.31
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: ListIconGadget alle Spalten löschen

Beitrag von Kiffi »

wieso nicht so?

Code: Alles auswählen

    For Counter = 0 To 999
      RemoveGadgetColumn(0, 0)
    Next
Grüße ... Peter
Hygge
Benutzeravatar
Shardik
Beiträge: 738
Registriert: 25.01.2005 12:19

Re: ListIconGadget alle Spalten löschen

Beitrag 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)
Zuletzt geändert von Shardik am 07.05.2021 21:09, insgesamt 1-mal geändert.
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: ListIconGadget alle Spalten löschen

Beitrag 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
Hygge
Antworten