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?
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