Enumeration-Buttons mit For-Schleife generieren?

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

Enumeration-Buttons mit For-Schleife generieren?

Beitrag 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:
PB 6.21 | Win 11
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: Enumeration-Buttons mit For-Schleife generieren?

Beitrag 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
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Re: Enumeration-Buttons mit For-Schleife generieren?

Beitrag 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
Bild
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: Enumeration-Buttons mit For-Schleife generieren?

Beitrag 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:
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Re: Enumeration-Buttons mit For-Schleife generieren?

Beitrag von Delle »

Wow, darauf wäre ich nicht mal ansatzweis egekommen :) PB überrascht immer wieder *g
PB 6.21 | Win 11
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Enumeration-Buttons mit For-Schleife generieren?

Beitrag von mk-soft »

Schade :(

da wart ihr schneller ;)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten