Tricky: Schaltflächen von Panels entfernen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Tricky: Schaltflächen von Panels entfernen

Beitrag von Delle »

Hallo,

ich versuche bestimmte Schaltflächen von einem Panel zu entfernen:

Code: Alles auswählen

For tab=2 To CountGadgetItems(#Panel)-1
If GetGadgetItemText(#Panel,tab)="leer":RemoveGadgetItem(#Panel,tab):EndIf
Next 
Sieht sicher auf den 1. Blick logisch aus, funktioniert aber leider nicht wie gewünscht :)

Nach jeder Entfernung rutschen ja die folgenden Schaltflächen im Index runter. Die Folge sind übersprungene/nichtentfernte Schaltflächen.

Eventuell CountGadgetItems(#Panel)-1 als Start wählen und nach 2 runterzählen?

Oder eine Variable mit einbauen, die den Index wieder berichtigt?

Danke,
Delle
PB 6.21 | Win 11
Benutzeravatar
alter Mann
Beiträge: 201
Registriert: 29.08.2008 09:13
Wohnort: hinterm Mond

Re: Tricky: Schaltflächen von Panels entfernen

Beitrag von alter Mann »

ne, einfach von hinten nach vorne

Code: Alles auswählen

For tab=CountGadgetItems(#Panel)-1 To 2 Step -1 
If GetGadgetItemText(#Panel,tab)="leer":RemoveGadgetItem(#Panel,tab):EndIf
Next 
Win11 64Bit / PB 6.0
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Tricky: Schaltflächen von Panels entfernen

Beitrag von NicTheQuick »

Rückwärts ist es am einfachsten. Oder was wolltest du eigentlich wissen?

Also ich verstehe jetzt nicht ganz die Frage, da du ja eh zwei mögliche Antworten dafür gegeben hast.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Re: Tricky: Schaltflächen von Panels entfernen

Beitrag von Delle »

alter Mann hat geschrieben:ne, einfach von hinten nach vorne
Genauso dacht ich's mir ja auch ;) Eventuell CountGadgetItems(#Panel)-1 als Start wählen und nach 2 runterzählen?
PB 6.21 | Win 11
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Re: Tricky: Schaltflächen von Panels entfernen

Beitrag von Delle »

NicTheQuick hat geschrieben:Rückwärts ist es am einfachsten.
Hatte ich schon probiert, allerdings erfolglos. Hatte Step -1 vergessen ;)
PB 6.21 | Win 11
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

Re: Tricky: Schaltflächen von Panels entfernen

Beitrag von ts-soft »

Naja, man kann die Laufvariable auch korrigieren:

Code: Alles auswählen

; Zeigt die Verwendung mehrerer Panels...
If OpenWindow(0, 0, 0, 322, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  PanelGadget     (0, 8, 8, 306, 203)
  AddGadgetItem (0, -1, "Panel 1")
  PanelGadget (1, 5, 5, 290, 166)
  AddGadgetItem(1, -1, "Sub-Panel 1")
  AddGadgetItem(1, -1, "Sub-Panel 2")
  AddGadgetItem(1, -1, "Sub-Panel 3")
  CloseGadgetList()
  For tab = 0 To CountGadgetItems(1) - 1
    If GetGadgetItemText(1, tab) = "Sub-Panel 2"
      RemoveGadgetItem(1, tab)
      tab - 1
    EndIf
  Next
  AddGadgetItem (0, -1,"Panel 2")
  ButtonGadget(2, 10, 15, 80, 24,"Button 1")
  ButtonGadget(3, 95, 15, 80, 24,"Button 2")
  CloseGadgetList()
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf


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
Antworten