Seite 1 von 1

Tricky: Schaltflächen von Panels entfernen

Verfasst: 23.10.2013 17:59
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

Re: Tricky: Schaltflächen von Panels entfernen

Verfasst: 23.10.2013 18:09
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 

Re: Tricky: Schaltflächen von Panels entfernen

Verfasst: 23.10.2013 18:10
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.

Re: Tricky: Schaltflächen von Panels entfernen

Verfasst: 23.10.2013 18:10
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?

Re: Tricky: Schaltflächen von Panels entfernen

Verfasst: 23.10.2013 18:11
von Delle
NicTheQuick hat geschrieben:Rückwärts ist es am einfachsten.
Hatte ich schon probiert, allerdings erfolglos. Hatte Step -1 vergessen ;)

Re: Tricky: Schaltflächen von Panels entfernen

Verfasst: 23.10.2013 18:24
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