SpinGadget und Return Taste

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
E-P-S
Beiträge: 134
Registriert: 30.03.2007 09:39
Kontaktdaten:

SpinGadget und Return Taste

Beitrag 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
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

.....jetzt interessiert mich aber doch, warum du ein dreifaches "= 0" in eine enumeration verpackst, die dann doch eigentlich gar nichts bewirkt.... :?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag 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 
Benutzeravatar
E-P-S
Beiträge: 134
Registriert: 30.03.2007 09:39
Kontaktdaten:

Beitrag 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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten