Seite 1 von 1

SpinGadget und Return Taste

Verfasst: 10.04.2007 17:30
von E-P-S
Hi zusammen.

Trotz intensiver Suche und diversen Tests bekomme ich das SpinGadget einfach nicht so angepasst wie ich es gern hätte.

Ich möchte ein SpinGadget welches sowohl die Eingabe über die Up/Dn Buttons akzeptiert, als auch die direkte Eingabe über Tastatur.

So, Die Up/Dn Buttons sind ja kein Problem, aber bei der direkten Eingabe per Tastatur komme ich einfach nicht hin.

Wenn ich z.B. den EventType #PB_EventType_Change auswerte, dann kann ich immer nur eine Zahl drücken und der Cursor springt danach ganz nach vorn. Wenn man also "5", "1" eingibt schreibt man nicht etwa 51, sondern 15 - was ja Blödsinn ist.

Leider unterstützt das Gadget aber auch kein GetFocus bzw. LostFocus als Event um den StringGadget Trick zu benutzen um die Return Taste zu erfassen.

Zusammengefasst also folgende Frage: Wie erkenne ich die Return Taste nach einer Eingabe in einem SpinGadget?

Vielen Dank

Verfasst: 11.04.2007 04:26
von edel
Beispiel :

Code: Alles auswählen

Enumeration
	#win    = 0
	#spin   = 0
	#return = 0 ;menu
EndEnumeration

hwnd = OpenWindow(#win,#PB_Ignore,#PB_Ignore,340,280,"leer")

CreateGadgetList(hwnd)
SpinGadget(#spin,10,10,100,23,0,100)
AddKeyboardShortcut(#win,#PB_Shortcut_Return,#return)

Repeat 
	event = WaitWindowEvent()
	If event = #PB_Event_Menu
		If EventMenu() = #return 
			If GetActiveGadget() = #spin
				Debug "Return on Spin"
			EndIf 
		EndIf 
	EndIf 

Until event = 16

Verfasst: 11.04.2007 04:35
von Kaeru Gaman
.....jetzt interessiert mich aber doch, warum du ein dreifaches "= 0" in eine enumeration verpackst, die dann doch eigentlich gar nichts bewirkt.... :?

Verfasst: 11.04.2007 05:01
von edel
Weil man so leicht erweitern kann :

Code: Alles auswählen

Enumeration
   #win    = 0
   #win2
   #spin   = 0
   #gadget_1
   #gadget_2
   #gadget_3
   #gadget_4
   #return = 0 ;menu
   #OPEN
   #SAVE   
EndEnumeration 

Verfasst: 11.04.2007 11:27
von E-P-S
Vielen Dank.

Das funktioniert prima. Ich hatte es zwar auch so versucht, aber irgendwie hab ich da wohl was falsch gemacht - bei mir ging es nicht.

Also danke nochmals.

Verfasst: 11.04.2007 12:07
von Kaeru Gaman
edel hat geschrieben:Weil man so leicht erweitern kann :
klasse idee :o

...ich wusste zwar, dass man in ner enum zwischenwerte angeben kann,
um einen weiteren startwert zu setzen, aber das zu benutzen,
um mehrere blöcke die alle bei 0 anfangen in einer enum zu definieren,
auf die idee bin ich bisher nicht gekommen.

..nuja.. ich mach ja auch nur selten was mit fensterle...