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 :bounce:

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

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. :lol: :allright:

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 ;)