Gadgetnummer über 9999 möglich ?

Anfängerfragen zum Programmieren mit PureBasic.
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: Gadgetnummer über 9999 möglich ?

Beitrag von ts-soft »

@Thorium
Genau das hab ich die ganze Zeit gesagt, aber wohl schlecht ausgedrückt.
:allright: Dir.

/edit
PS: Das Umgehen der Debugger Limititation löst Delles Problem sowieso in keinster Weise!
Er möchte Gadgets anhand ihrer ID austauschen, so das FreeGadget usw. nicht notwendig
sind, das ist aber mit der ID eines dynamischen Objects weiterhin nicht möglich, auch wenn
der Compiler die hohe Zahl annimmt, er wird in der Gadgetliste kein Object mit diesem Index
finden.
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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Gadgetnummer über 9999 möglich ?

Beitrag von RSBasic »

Warum möchte Delle denn alles neu erstellen? Es geht wahrscheinlich um die folgende Sache: http://www.purebasic.fr/german/viewtopi ... 16&t=25156
Da reicht doch aus, wenn er die Gadgets nur verschiebt (ResizeGadget), um es neu zu positionieren (und in diesem Fall bleiben die Handle-Nummern weiterhin erhalten) oder habe ich was falsches verstanden?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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: Gadgetnummer über 9999 möglich ?

Beitrag von ts-soft »

Ich hab das eher so verstanden:

Code: Alles auswählen

ButtonGadget(1, ........)
...

...
ButtonGadget(1, ......)

#####################################

button = ButtonGadget(#PB_Any, .....)
....

....
ButtonGadget(button, ....)
und der zweite Teil würde auch dann nicht funktionieren, wenn eine so hohe "ID" erlaubt wäre.
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
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Re: Gadgetnummer über 9999 möglich ?

Beitrag von Delle »

RSBasic hat geschrieben:Warum möchte Delle denn alles neu erstellen? Es geht wahrscheinlich um die folgende Sache: http://www.purebasic.fr/german/viewtopi ... 16&t=25156
Da reicht doch aus, wenn er die Gadgets nur verschiebt (ResizeGadget), um es neu zu positionieren (und in diesem Fall bleiben die Handle-Nummern weiterhin erhalten) oder habe ich was falsches verstanden?
Darum geht es auch ja... aber wenn Du z.B. ein Gadget davon löscht, dann müssen die anderen "aufrücken".

Aber ich fange jetzt einfach immer fest mit ID 1000 an und lasse hochzählen, bei jeder Aktualisierung wird wieder auf 1000 zurückgesetzt. Works! ;)
PB 6.21 | Win 11
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Gadgetnummer über 9999 möglich ?

Beitrag von STARGÅTE »

Aber ich fange jetzt einfach immer fest mit ID 1000 an und lasse hochzählen, bei jeder Aktualisierung wird wieder auf 1000 zurückgesetzt. Works!
... Und führt zu schlimmen Fehler, wenn du mit deiner hochzählerei ausversehen ein anderes Gadget löschst.

Wieso keine Liste?

Hier ein Beispiel: mit PB_Any:
mit "Neuer Button" Buttons hinzufügen, und duch klick auf einen Button kannst du ihn löschen und die andere rücken auf:

Code: Alles auswählen

Enumeration
	#Window
	#Gadget
EndEnumeration


OpenWindow(#Window, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)

ButtonGadget(#Gadget, 10, 10, 100, 20, "Neuer Button")

Global NewList MyButton.i()

For n = 1 To 10
	AddElement(MyButton())
	MyButton() = ButtonGadget(#PB_Any, 10, 50+ListIndex(MyButton())*20, 100, 20, "Button "+Str(Random(100)))
Next

Repeat
	
	Select WaitWindowEvent()
			
		Case #PB_Event_CloseWindow
			End
			
		Case #PB_Event_Gadget
			Select EventGadget()
				Case #Gadget
					LastElement(MyButton())
					AddElement(MyButton())
					MyButton() = ButtonGadget(#PB_Any, 10, 50+ListIndex(MyButton())*20, 100, 20, "Button "+Str(Random(100)))
				Default
					ForEach MyButton()
						If MyButton() = EventGadget()
							FreeGadget(MyButton())
							DeleteElement(MyButton())
							Break
						EndIf
					Next
					While NextElement(MyButton())
						ResizeGadget(MyButton(), #PB_Ignore, 50+ListIndex(MyButton())*20, #PB_Ignore, #PB_Ignore)
					Wend
			EndSelect
			
	EndSelect
	
ForEver
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Gadgetnummer über 9999 möglich ?

Beitrag von RSBasic »

Meinst du mit "aufrücken" noch oben positionieren, so dass auch nach dem Entfernen eines "Eintrages" alle Gadgets untereinander sind? Warum sollte das mit ResizeGadget() nicht funktionieren?
Wenn du die Gadgetnummern zum Beispiel in einer Map, die mit einer Struktur verknüpft ist (um weitere Informationen zu den jeweiligen Einträgen speichern zu können), einfügst, dann ist es doch egal, welche Nummer die Gadgets haben. Einfach #pb_any und fertig. Und du greifst einfach auf deine Map zu, um die Nummer eines Gadgets zu ermitteln. Beispiel OwnMap("Item782")\GadgetNr
Und das geht viel besser, als wenn du statische Gadgetnummern verwenden würdest.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Re: Gadgetnummer über 9999 möglich ?

Beitrag von Delle »

Ich verwende bereits eine Liste... Problem mit #PB_Any ist nur, dass bei einem Klick auf einen Button dann EvendGadget() z.B. eine nichtssagende Zahl zurückliefert.

Ich weiß dann nicht ob der User nun das Bild angezeigt haben wollte, oder das Bild löschen wollte, oder oder oder...

Deswegen war die Idee "fest" zu starten:

imageid.i = 1000
deletebutton.i = 2000

So steht das auch in der Liste drin... und wenn jemand auf irgendein Image klickt bekomme ich zwischen 1000 und 1100 zurück (nur 100 Bilder erlaubt).

Dann weiß ich wenigstens "ah... EvendGadget() is zwischen 1000 und 1100 also muss es ein Klick auf Bild imageid.i 1XXX gewesen sein".

Funktioniert jedenfalls, mir fällt gerade echt keine bessere Variante ein...
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: Gadgetnummer über 9999 möglich ?

Beitrag von ts-soft »

Du kannst die Liste auch strukturieren und in einem member den Typ, z.B. Bild, festhalten.

// edit
Rechtschreibung teilweise korrigiert :mrgreen:
Zuletzt geändert von ts-soft am 26.01.2012 21:17, insgesamt 1-mal geändert.
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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Gadgetnummer über 9999 möglich ?

Beitrag von RSBasic »

Du könntest beim Erstellen der Gadgets Zusatzinformationen mitgeben und zwar in einer Struktur. Du bekommst von EventGadget() die Nummer des Gadgets und greifst auf deine Liste zu, die mit einer Struktur verknüpft ist, und ermittelst mit Hilfe einer Variable, die in der Struktur definiert ist, die "Art". Also was dann passieren soll. Beispiel als Map: OwnMap("792")\Vorgang.s
Wenn zum Beispiel "Image" zurückgegeben wird, dann weißt du, dass der Benutzer auf ein Bild geklickt hat und du kannst dann dementsprechend einen bestimmten Vorgang durchführen, wie z.B. löschen.

\\Edit:
Schon wieder zu langsam.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
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: Gadgetnummer über 9999 möglich ?

Beitrag von ts-soft »

RSBasic hat geschrieben:\\Edit:
Schon wieder zu langsam.
Macht nicht, Du verweist ja auf eine Map, ich auf eine List :mrgreen:
<ende offtopic>

Desweiteren wäre SetGadgetData auch eine Möglichkeit, 1 für Bild, 2 für Text usw.

Und GadgetType() haben wir jetzt ganz vergessen :mrgreen:
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
Gesperrt