Seite 1 von 1
Enumeration-Buttons mit For-Schleife generieren?
Verfasst: 06.03.2024 16:13
von Delle
Hallo,
ich glaube das geht irgendwie, habe es vermutlich zuletzt 2007 gemacht
Es sind 10 Buttons fortlaufend nummeriert in einer Enumeration vorhanden, #Button_1, #Button_2 usw.
Danach sollen 10 Buttons nicht alle manuell platziert werden, sondern "dynamisch" generiert:
Code: Alles auswählen
For b=1 to 10:
ButtonGadget("#Button_"+b, 20, y, 100, 30, "Slot "+b)
y=y+50
Next
Geht das so irgendwie? #Pb_Any hilft mir nix, da ich die buttons ansprechen muss. Alternative wäre eben ohne Enum und mit Nummern 1-10 hochzuzählen...
Habt ihr Ideen?

Re: Enumeration-Buttons mit For-Schleife generieren?
Verfasst: 06.03.2024 16:59
von NicTheQuick
Konstanten kannst du nicht dynamisch zur Laufzeit mit Namen ansprechen. Du musst entweder #PB_Any nutzen, was dich ja nicht daran hindert die Buttons einzeln anzusprechen, wenn du sie in einem Array oder eine Map speicherst. Oder du musst eine Enumeration-Basis nutzen und von der aus dann hochzählen.
Erste Idee:
Code: Alles auswählen
Enumeration
#Button_BASE
#Button_1 = #Button_BASE
#Button_2
#Button_3
#Button_4
#Button_5
#Button_6
#Button_7
#Button_8
#Button_9
#Button_10
EndEnumeration
; Nur zum besseren Verständnis ein Beispiel
Debug #Button_10
Debug #Button_BASE + 10 - 1
For b = 1 To 10
; Wichtig ist es hier noch einmal - 1 zu rechnen
ButtonGadget(#Button_BASE + b - 1, 20, y, 100, 30, "Slot " + b)
y = y + 50
Next
Hier das ganze mit einem Array:
Code: Alles auswählen
Global Dim Buttons(9)
For b = 1 To 10
; Wichtig ist
Buttons(b - 1) = ButtonGadget(#PB_Any, 20, y, 100, 30, "Slot " + b)
y = y + 50
Next
Re: Enumeration-Buttons mit For-Schleife generieren?
Verfasst: 06.03.2024 17:12
von Macros
Man kann auch in der For-schleife einfach direkt die Buttonkonstanten verwenden:
Code: Alles auswählen
Enumeration
#Button_1
#Button_2
#Button_3
#Button_4
#Button_5
#Button_6
#Button_7
#Button_8
#Button_9
#Button_10
EndEnumeration
OpenWindow(1,0,0,800,600,"Buttontest",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
For button = #Button_1 To #Button_10
; das +1 im Str() weil die Buttons ja bei "Slot 1" und nicht bei "Slot 0" beginnen sollen.
ButtonGadget(button, 20, y, 100, 30, "Slot " + Str(button-#Button_1+1))
y = y + 50
Next
Repeat: event=WaitWindowEvent(): Until event=#PB_Event_CloseWindow
Re: Enumeration-Buttons mit For-Schleife generieren?
Verfasst: 06.03.2024 17:19
von NicTheQuick
Macros hat geschrieben: 06.03.2024 17:12
Man kann auch in der For-schleife einfach direkt die Buttonkonstanten verwenden:
[...]
Hoppla, das ist natürlich nochmal eine Nummer einfacher.

Re: Enumeration-Buttons mit For-Schleife generieren?
Verfasst: 06.03.2024 17:20
von Delle
Wow, darauf wäre ich nicht mal ansatzweis egekommen

PB überrascht immer wieder *g
Re: Enumeration-Buttons mit For-Schleife generieren?
Verfasst: 06.03.2024 18:27
von mk-soft
Schade
da wart ihr schneller
