Seite 4 von 5

Re: Gadgetnummer über 9999 möglich ?

Verfasst: 26.01.2012 18:08
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.

Re: Gadgetnummer über 9999 möglich ?

Verfasst: 26.01.2012 19:35
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?

Re: Gadgetnummer über 9999 möglich ?

Verfasst: 26.01.2012 19:59
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.

Re: Gadgetnummer über 9999 möglich ?

Verfasst: 26.01.2012 20:42
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! ;)

Re: Gadgetnummer über 9999 möglich ?

Verfasst: 26.01.2012 20:51
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

Re: Gadgetnummer über 9999 möglich ?

Verfasst: 26.01.2012 20:51
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.

Re: Gadgetnummer über 9999 möglich ?

Verfasst: 26.01.2012 21:05
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...

Re: Gadgetnummer über 9999 möglich ?

Verfasst: 26.01.2012 21:15
von ts-soft
Du kannst die Liste auch strukturieren und in einem member den Typ, z.B. Bild, festhalten.

// edit
Rechtschreibung teilweise korrigiert :mrgreen:

Re: Gadgetnummer über 9999 möglich ?

Verfasst: 26.01.2012 21:15
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.

Re: Gadgetnummer über 9999 möglich ?

Verfasst: 26.01.2012 21:20
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: