ClearGadgetItems auch für Columns?

Anfängerfragen zum Programmieren mit PureBasic.
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

ClearGadgetItems auch für Columns?

Beitrag von TheSaint »

Hallo Zusammen,

ich habe eine Frage zu einem ListviewGadget, und zwar:

ich kann ja alle Einträge in einem ListviewGadget mit dem
Befehl: ClearGadgetItems löschen.

Jedoch wie kann ich den alle Spaltenüberschriften löschen?

Mit diesem Befehl fülle ich die Spaltenüberschriften:

Code: Alles auswählen

AddGadgetColumn(#Listview_0,0,DatabaseColumnName(db, Spalten-Spalte),90)
Mit RemoveGadgetColumn(#Gadget, Spalte) kann ich immer
nur eine Spalte löschen.

Habe in der Hilfe gesucht und hier im Forum. Irgendwie hab ich nichts gefunden.

Wäre toll, wenn mir hier jemand helfen könnte.
Gruß, TheSaint
___________________________
[ XP Prof SP 3 | Vista | PB 4.30 ]
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Wenn du eh alles löschen willst, dürfte es am schnellsten gehen, einfach das ganze Gadget neu zu erstellen.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Du meinst ein ListIconGadget?
Wirste wohl eine schleife nehmen müssen
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Beitrag von TheSaint »

Hallo HeXOR,
hallo ts-soft,

vielen Dank für Eure Hilfe.

ts-soft: Oh, Verzeihung, ja Du hast vollkommen recht, meinte ein ListiconGadget. Ja das mit der Schleife bekomme ich hin. Schade,
dachte es gebe hierfür auch einen Befehl. :)

HeXOR: Hm, muss ich dann, wenn ich das Gadget neu erstelle, immer folgenden gesamten Code aufrufen:??

Code: Alles auswählen

            AddGadgetItem(#Panel10,-1,"Informationen")  ;Register Informationen
                ContainerGadget(#Pan2, 0, 0, 679, 374, #PB_Container_Flat)
                PanelGadget(#Panel11, 5, 5, 675, 350)
                    AddGadgetItem (#Panel11, -1, "Info Suche")    ;Register Informationen / Info Suche
                        ListIconGadget(#Listview_0, 10, 200, 650, 120, "", 80,#PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect|#PB_ListIcon_MultiSelect|#PB_ListIcon_HeaderDragDrop)
                        SendMessage_(GadgetID(#Listview_0), #LVM_SETEXTENDEDLISTVIEWSTYLE, 0, #LVS_EX_LABELTIP)
                CloseGadgetList()
Nochmals vielen Dank für Eure Hilfe
Gruß, TheSaint
___________________________
[ XP Prof SP 3 | Vista | PB 4.30 ]
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Nein, das ginge auch irgendwie mit OpenGadgetList(), aber dann dürfte es wohl doch einfacher sein eine Schleife zu machen.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

TheSaint hat geschrieben:dachte es gebe hierfür auch einen Befehl. :)
Kannst dir ja einen schnitzen:

Code: Alles auswählen

Procedure RemoveColumns(Gadget)
	hwndHeader = SendMessage_(GadgetID(Gadget),#LVM_GETHEADER,0,0)
	Count = SendMessage_(hwndHeader,#HDM_GETITEMCOUNT,0,0)
	
	For i=Count To 1 Step -1
		RemoveGadgetColumn(0,i)
	Next
EndProcedure

OpenWindow(0,0,0,500,400,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0,0,0,0,0,"Spalte1",80)

AddGadgetColumn(0,1,"Spalte2",80)
AddGadgetColumn(0,2,"Spalte3",80)
AddGadgetColumn(0,3,"Spalte4",80)
AddGadgetColumn(0,4,"Spalte5",80)

For i=0 To 50
	AddGadgetItem(0,-1,"blah" + Chr(10) + "blah" + Chr(10) + "blah" + Chr(10) + "blah" + Chr(10) + "blah")
Next

ButtonGadget(1,5,5,100,25,"Mach weg!")

Repeat
	EventID = WaitWindowEvent()
	
	If EventID = #PB_Event_Gadget And EventGadget() = 1	
		RemoveColumns(0)
	EndIf
	
	If EventID = #PB_Event_SizeWindow
		ResizeGadget(0,5,30,WindowWidth(0)-10,WindowHeight(0)-35)
	EndIf
Until EventID = #PB_Event_CloseWindow
Windows 10 Pro, 64-Bit / Outtakes | Derek
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Beitrag von TheSaint »

Hallo HeXOR,
hallo Fluid Byte,

HeXOR: Ja, das werde ich machen.

Fluid Byte: Oh, super vielen Dank für Deinen Code Schnippsel.

Den kann ich super verwenden.

Nochmals allen vielen Dank.
Gruß, TheSaint
___________________________
[ XP Prof SP 3 | Vista | PB 4.30 ]
marco2007
Beiträge: 906
Registriert: 26.10.2006 13:19
Kontaktdaten:

Beitrag von marco2007 »

..hab ich zwar noch nie gebraucht, aber ohne API:

Code: Alles auswählen

OpenWindow(0,0,0,500,400,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
ListIconGadget(0,0,0,0,0,"Spalte1",80) 

AddGadgetColumn(0,1,"Spalte2",80) 
AddGadgetColumn(0,2,"Spalte3",80) 
AddGadgetColumn(0,3,"Spalte4",80) 
AddGadgetColumn(0,4,"Spalte5",80) 

For i=0 To 50 
   AddGadgetItem(0,-1,"blah" + Chr(10) + "blah" + Chr(10) + "blah" + Chr(10) + "blah" + Chr(10) + "blah") 
Next 

ButtonGadget(1,5,5,100,25,"Mach weg!") 

Repeat 
   EventID = WaitWindowEvent() 
    
   If EventID = #PB_Event_Gadget And EventGadget() = 1 
   While GetGadgetItemText(0, -1, 0)<>""
      RemoveGadgetColumn(0, 0) 
   Wend   
   EndIf 
    
   If EventID = #PB_Event_SizeWindow 
      ResizeGadget(0,5,30,WindowWidth(0)-10,WindowHeight(0)-35) 
   EndIf 
Until EventID = #PB_Event_CloseWindow
Windows 11 - PB 6.03 x64
_________________________________
Antworten